Nginx 403 запрещено для всех файлов - PullRequest
177 голосов
/ 22 июля 2011

У меня nginx установлен с PHP-FPM на коробке CentOS 5, но я пытаюсь заставить его обслуживать любой из моих файлов - будь то PHP или нет.

Nginx работает как www-data: www-data, и сайт по умолчанию «Welcome to nginx на EPEL» (принадлежит root: root с разрешениями 644) загружается нормально.

Файл конфигурации nginx имеет директиву include для / etc / nginx /sites-enabled / *. conf, и у меня есть файл конфигурации example.com.conf , таким образом:

server {
 listen 80;

 Virtual Host Name
 server_name www.example.com example.com;


 location / {
   root /home/demo/sites/example.com/public_html;
   index index.php index.htm index.html;
 }

 location ~ \.php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  PATH_INFO $fastcgi_script_name;
  fastcgi_param  SCRIPT_FILENAME  /home/demo/sites/example.com/public_html$fastcgi_script_name;
  include        fastcgi_params;
 }
}

Несмотря на то, что public_html принадлежит www-data: www-данных с правами доступа 2777, этот сайт не может обслуживать любой контент -

 [error] 4167#0: *4 open() "/home/demo/sites/example.com/public_html/index.html" failed (13: Permission denied), client: XX.XXX.XXX.XX, server: www.example.com, request: "GET /index.html HTTP/1.1", host: "www.example.com"

Я обнаружил множество других постов с пользователями, получающими 403 с из nginx, но большинство из тех, что я видел, связано с более сложными настройками сRuby / Passenger (с которым в прошлом я действительно преуспел) или только получают ошибки, когда задействован вышестоящий PHP-FPM, так что они, похоже, мало помогают.

Я что-то тут сделал глупо

Ответы [ 11 ]

0 голосов
/ 05 ноября 2014

Я попытался разобраться в этой проблеме, ошибочно введя команду setfacl.Я запустил:

sudo setfacl -m user:nginx:r /home/foo/bar

Я отказался от этого маршрута в пользу добавления nginx в группу foo, но этот пользовательский ACL препятствовал попыткам nginx получить доступ к файлу.Я очистил его, запустив:

sudo setfacl -b /home/foo/bar

И тогда nginx смог получить доступ к файлам.

...