Ubuntu

Nginx 在根目錄下提供文件,但不在子目錄下

  • December 19, 2011

我在 Ubuntu 11.10 上使用 php-fpm 和 SELinux 執行 nginx。該網站通過 https/ssl 提供服務

提供直接位於任何站點根目錄下的內容,但在嘗試訪問子目錄時,以下內容被添加到/var/log/nginx/error.log

"/home/mydomain/public_html/{subdirectory}" failed (13: Permission denied)

我試過關閉 SELinux ( setenforce 0)。不用找了。

  • 伺服器正在執行www-data並且使用者mydomain屬於 group www-data
  • php-fpm 以使用者身份執行mydomain
  • 權限:/home目錄是0750,子目錄是0755

站點配置如下:

server {
       listen 443;

       root /home/mydomain/public_html;
       index index.html index.htm index.php;

       server_name www.mydomain.com;

       location / {
               try_files $uri $uri/ /index.php;
       }

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9001
       location ~ \.php$ {
               fastcgi_pass 127.0.0.1:9001;
               fastcgi_index index.php;
               # include /etc/nginx/fastcgi_params;
       }

       ssl on;
       ssl_certificate /etc/ssl/certs/server.crt;
       ssl_certificate_key /etc/ssl/private/server.key;

       ssl_session_timeout 5m;

       ssl_protocols SSLv3 TLSv1;
       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;

}

server {
       listen 80;
       server_name *.mydomain.com;
       rewrite ^(.*) https://www.mydomain.com$1 permanent;
}

這是ls -al /home/mydomain/public_html所要求的輸出:

drwxr-xr-x. 3 mydomain mydomain 4096 2011-12-07 17:49 .
drwxr-x---. 6 mydomain mydomain 4096 2011-11-14 08:33 ..
drwxr-xr-x. 3 mydomain mydomain 4096 2011-12-06 16:23 subdirectory
-rw-r--r--. 1 mydomain mydomain   55 2011-12-07 17:50 index.php
-rw-r--r--. 1 mydomain mydomain   20 2011-12-07 17:49 info.php

這是我的子目錄的內容:

drwxr-xr-x.  3 mydomain mydomain 4096 2011-12-06 16:23 .
drwxr-xr-x.  3 mydomain mydomain 4096 2011-12-07 17:49 ..
drwxr-xr-x. 11 mydomain mydomain 4096 2011-12-06 16:26 html
-rw-r--r--.  1 mydomain mydomain   36 2011-12-06 16:23 index.php

感謝您的任何幫助。另外,如果發現任何其他配置問題,請發表評論。

啊哈,我沒有註意到 /home/* 上的 750。我認為這就是問題所在。您的 php 文件對於 php-fpm 是可讀的,但對於 nginx 是不可讀的。內容的完整路徑也必須對 nginx 可讀。如果可能,將權限設置/home/mydomain為 755,或將內容移動到其他目錄(如,/var/www)。

引用自:https://serverfault.com/questions/341599