2014-01-17 32 views
0

我試過了所有的東西,但我仍然無法在瀏覽器上顯示錯誤,我使用nginx,php-fpm和centOS 6.4獲取錯誤502而不是在nginx + php-fpm上顯示錯誤

nginx.conf

user nginx; 
worker_processes 1; 

error_log /var/log/nginx/error.log warn; 
pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 

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

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    keepalive_timeout 65; 

    #gzip on; 

    include /etc/nginx/conf.d/*.conf; 
} 

這裏面conf.d

server { 
listen  80; 
server_name localhost; 
root /server/public; 
index run.php; 


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

location ~ \.php$ { 
    fastcgi_index run.php; 
    fastcgi_pass 127.0.0.1:9000; 
    include   fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 
} 

PHP-FPM配置

catch_workers_output = yes 
php_flag[display_errors] = on 
php_admin_flag[log_errors] = on 
我nginx的配置

的php.ini

display_errors = on 
log_errors = on 

我VirtualBox上運行的CentOS 6.4啓用NAT,如果我從服務器內部的本地主機捲曲我得到正確的錯誤,但如果我從瀏覽器訪問該網站的外服務器我得到一個502錯誤的網關錯誤,如果我正在加載的頁面沒有錯誤一切工作正常,我錯過了什麼?

+0

'cat'你的''/ var/log/nginx/error.log'文件並找出當你訪問系統時web服務器看到的確切錯誤,因爲502通常意味着網關沒有正確配置, 'php5-fpm'通常意味着你不是'fastcgi_pass'-正確的路徑 –

回答

0

如果你想知道爲什麼你收到這個錯誤,我可以給你一些提示。

錯誤502意味着壞的網關,意味着nginx試圖代理的php服務器沒有響應,也許是因爲php5-fpm沒有監聽端口9000,而是使用了sock文件,或者因爲php根本沒有運行(如果所有的php文件都不工作)

爲什麼你會從curl和瀏覽器得到不同的迴應呢?很好,因爲你的服務器被定義爲localhost我假設兩種方法沒有被不同的服務器塊捕獲。

正確的方法已經固定,這是檢查活動的虛擬主機和PHP5-FPM聽配置,

我認爲這是安裝新的PHP解決了該問題可能是因爲它覆蓋舊的只是巧合配置文件到一個與nginx配置一起工作的新文件。

但無論如何,我只是想給你一些關於如果你將來發現類似問題時要檢查的提示。

0

看起來就像是我的PHP版本(5.3),這是失敗的,更新到PHP 5.5之後,它開始工作