2015-06-09 94 views
2

我想在CentOS上用nginx和php-fpm和MySQL安裝wordpress。Nginx的403用php-fpm禁止

我安裝nginx和wordpress後。訪問任何路徑只會得到403禁止的錯誤。

這是nginx的配置

user nginx nginx; 
worker_processes 1; 

error_log logs/error.log; 
events { 
    worker_connections 1024; 
} 


http { 
    include  mime.types; 
    default_type application/octet-stream; 

    sendfile  on; 
    keepalive_timeout 65; 

    gzip on; 

    server { 
     listen  80; 
     server_name example.com; 
     root /home/wordpress; 

     location/{ 
      try_files $uri $uri/ /index.php?q=$uri&$args; 
     } 

     location ~ \.php$ { 
      include fastcgi.conf; 
      fastcgi_index index.php; 
      fastcgi_pass 127.0.0.1:9000; 
     } 
    } 
} 

和fastcgi.conf

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
fastcgi_param QUERY_STRING  $query_string; 
fastcgi_param REQUEST_METHOD  $request_method; 
fastcgi_param CONTENT_TYPE  $content_type; 
fastcgi_param CONTENT_LENGTH  $content_length; 

fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 
fastcgi_param REQUEST_URI  $request_uri; 
fastcgi_param DOCUMENT_URI  $document_uri; 
fastcgi_param DOCUMENT_ROOT  $document_root; 
fastcgi_param SERVER_PROTOCOL $server_protocol; 
fastcgi_param HTTPS    $https if_not_empty; 

fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 

fastcgi_param REMOTE_ADDR  $remote_addr; 
fastcgi_param REMOTE_PORT  $remote_port; 
fastcgi_param SERVER_ADDR  $server_addr; 
fastcgi_param SERVER_PORT  $server_port; 
fastcgi_param SERVER_NAME  $server_name; 

# PHP only, required if PHP was built with --enable-force-cgi-redirect 
fastcgi_param REDIRECT_STATUS 200; 

我的根路徑是/home/wordpress

而且namei -om /home/wordpress是:

f: /home/wordpress/ 
dr-xr-xr-x root root/
drwxr-xr-x root root home 
drwxrwxrwx nginx nginx wordpress 

我發現,如果改變location /添加index配置爲

location/{ 
      index index.php; 
      try_files $uri $uri/ /index.php?q=$uri&$args; 
    } 

我可以訪問example.com和得到正確的內容。
其他的也是403禁止的。

回答

0

檢查nginx錯誤日誌。你會發現這樣的:

*472430 directory index of "/home/wordpress" is forbidden 

你應該將index聲明服務器塊:

server { 
    root /home/wordpress; 
    index index.php; 
} 

而且一定要設置cgi.fix_pathinfo0。例如通過執行

sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" php.ini 

可以使用php --ini找到你ini文件。

重新啓動php-fpm和您的網站應加載正常。