2014-02-08 31 views
0

我對nginx相當陌生,並認爲它將非常直接地爲它服務php,因爲該設置非常常見,但它似乎比我預期的要複雜得多。無法讓PHP服務於Nginx - 錯誤404

這裏是我的配置..

server { 
     listen 80; 
     server_name domain.com www.domain.com; 

     location/{ 
       root /srv/www/domain.com/public_html; 
       index index.php; 
     } 

# serve static files directly 
#location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ 
# access_log  off; 
# expires   30d; 

     location ~ [^/]\.php(/|$) { 
       fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
       if (!-f $document_root$fastcgi_script_name) { 
         return 404; 
       } 

       fastcgi_pass /var/run/php5-fpm.sock; 
       fastcgi_index index.php; 
       include fastcgi_params; 
     } 
} 

如果我取代 「的index.php」 用 「的index.html」 文件,nginx的完美提供了HTML。

我見過指南,建議修改任何從iptables到php-fpm到php.ini,以快速cgi到網站可用..?

我不確定這些教程中有很多正在嘗試完成......現在我只是想讓我的index.php提供phpinfo()。解決404錯誤的下一步是什麼?

是否有一個明確的指導,可以通過使用nginx服務php的各種選項?

Debian的喘息7.3在Xen上

回答

1

試試這個配置:

server { 
    listen 80; 
    server_name domain.com www.domain.com; 
    root /srv/www/domain.com/public_html; 
    index index.php; 

    location ~ ^(.+\.php)(/.*)?$ { 
     fastcgi_pass localhost:9000; 
     include fastcgi_params; 
    } 
} 

(假設你的index.php文件是/srv/www/domain.com/public_html)

+0

它改變一個404錯誤502壞網關 – some1

+0

要修復502,我不得不改變/etc/php5/fpm/pool.d/www.conf從.sock一行聽= 127.0.0.1:9000 – some1

+0

如果系統是已經配置爲在sock文件上工作,爲什麼要將其更改爲端口? –