Если вы используете Ubuntu и все вышеперечисленное не помогло вам, скорее всего, виноват AppArmor.
Вот хорошее руководство, как это исправить: https://www.digitalocean.com/community/tutorials/how-to-create-an-apparmor-profile-for-nginx-on-ubuntu-14-04
Короче говоря:
vi /etc/apparmor.d/nginx
Или
sudo aa-complain nginx
sudo service nginx restart
Посмотреть всеработает хорошо ... тогда
sudo aa-logprof
У меня все еще были проблемы с тем, что Nginx не смог прочитать error.log, хотя у него были все возможные разрешения, в том числе в Apparomor.Я предполагаю, что это как-то связано с порядком записей или каким-то взаимодействием с Passenger или PHP-Fpm ... У меня не хватило времени, чтобы устранить эту проблему, и сейчас вернулись в Apache.(Apache работает намного лучше, к вашему сведению.)
AppArmor просто позволяет Nginx делать все, что он хочет, если вы просто удалите профиль:
rm /etc/apparmor.d/nginx
service apparmor reload
Шокирующе, но вряд ли удивительно, много сообщений наИсправление ошибок Nginx приводит к полному отключению SELinux или удалению AppArmor.Это плохая идея, потому что вы теряете защиту от большого количества программного обеспечения.Просто удаление профиля Nginx - лучший способ устранения неполадок в ваших конфигурационных файлах.Если вы знаете, что проблема не в ваших конфигурационных файлах Nginx, вы можете потратить время на создание правильного профиля AppArmor.
Без профиля AppArmor, особенно если вы запускаете что-то вроде Passenger, я даю вашему серверу около месяца на то, чтобы зайти в тупик.