2014-08-31 91 views
2

我有了這個非常簡單的服務器塊下網站可用Nginx的網站,提供不工作

問題:當我嘗試進入mydomain.com,Nginx的返回«404未找到»,但如果我嘗試進入特別文件,它工作正常,如mydomain.com的index.php

server { 

    listen   80; 
    index   index.php; 
    server_name  mydomain.com; 
    root   /home/myusername/sites/mydomain.com/htdocs; 

    access_log  /home/myusername/sites/mydomain.com/logs/access.log; 
    error_log  /home/myusername/sites/mydomain.com/logs/error.log; 

    location/{ 
      try_files $uri =404; 
    } 

    location ~ \.php$ { 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 

} 

需要注意的是:

  • 主機文件配置;
  • 每次編輯後我重新啓動Nginx;
  • 訪問權限,用戶和組是否正確;
  • error.log文件爲空,access.log返回所有404;
  • 我試圖通過添加/刪除一些行來改變配置,仍然沒有改變;
  • 該網站啓用網站啓用與正確的符號鏈接(我試圖編輯它,它打開了正確的文件);
  • 我有誰運行良好,在同一臺服務器上的幾個網站(所以包括網站可用網站啓用是確定的,而Nginx的正常工作)。

回答

1

所以,答案是送禮者給我的ServerFault通過Alexey Ten,這裏就是答案


try_files指令是過於嚴格的副本,並且,我猜,是在錯誤的地點。

要麼完全刪除location /,這沒有多大意義,或者,至少要加上$uri/這樣index指令才能工作。

try_files $uri $uri/ =404; 

但我的猜測是,你需要移動這個try_fileslocation ~ \.php$,這將確保PHP文件exsists之前將它傳遞給PHP-FPM處理。所有其他文件將由nginx在適當使用index指令的情況下提供。

server { 
    listen   80; 
    index   index.php; 
    server_name  mydomain.com; 
    root   /home/myusername/sites/mydomain.com/htdocs; 

    access_log  /home/myusername/sites/mydomain.com/logs/access.log; 
    error_log  /home/myusername/sites/mydomain.com/logs/error.log; 

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 
}