nginx PHP執行 502 bad gateway 或空白解決筆記

配置安裝好NGINX PHP 等WEB服務,剛開始執行PHP的時候會變成下載:這是因爲nginx沒有設置好無法把PHP傳遞到後方的php-fpm解釋器。目錄安裝不一樣,可能都會有不同。

看看你的nginx.conf或自定義虛擬主機配置,裏面有沒有這樣的設置:

location ~ .*\.php$ {
fastcgi_pass   127.0.0.1:9000;
        }

  把PHP傳遞給後方127.0.0.1的9000端口上。

當然啦,你的php-fpm解析器也需要正常運行,並監聽好9000端口,才能最終生效並有效處理php腳本。不然解析PHP會變成502 bad gateway 錯誤。解決如下:
修改php-fpm的配置文件 /etc/php-fpm.conf   裏面的 listen = /tmp/php-fcgi.sock  改爲  listen = 127.0.0.1:9000,nginx和php配置必須統一。雖然502錯誤解決了,雖然會返回200狀態碼, 但實際輸出給瀏覽器的頁面內容卻是空白。 原因是nginx無法正確的將 *.php 文件的地址傳遞給php-fpm去解析, 相當於php-fpm接受到了請求,但這請求卻指向一個不存在的文件,於是返回空結果。 爲了解決這個問題,需要改動nginx默認的fastcgiparams配置文件:

vi /etc/nginx/fastcgi_params 在文件的最後增加兩行: 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO                $fastcgi_script_name;

或者直接在虛擬主機配置或nginx.conf配置增加這兩項;爲了顯示美觀,可用僞靜態隱藏PHP後綴,只要配置加上一句:

location / {
try_files $uri $uri/ $uri.php?$args;
}

完整主機配置如下:

server { listen 80;
        server_name default;
        root /home/www/;
location / {
try_files $uri $uri/ $uri.php?$args;
            root   html/blog;
            index  index.html index.htm;
        }

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

完美解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章