本文目錄一覽:
- 1、我的freebsd系統下Nginx PHP提示出現The page you are looking for is temporarily unavailable錯誤?
- 2、nginx PHP文件不能正常訪問.
- 3、安裝nginx+php後,Php頁面訪問時提示404,但頁面是存在的是怎麼回事?
- 4、nginx 反向代理後為什麼訪問php文件 會提示404
- 5、linux nginx 網站訪問提示502 Bad Gateway怎麼操作?
我的freebsd系統下Nginx PHP提示出現The page you are looking for is temporarily unavailable錯誤?
1.先檢查PHP FastCGI進程數是否夠用:
netstat -anpo|grep “php-cgi”|wc -l
如果輸出為0的話,則表示FastCGI 進程數夠大,
2.此時則修改scgi_params文件,找到:
scgi_param SCGI 1;
把它改為:
scgi_param SCGI 5;
3.PHP程序如果的執行時間超過了Nginx的等待時間,就可適當地增加nginx.conf配置文件中FastCGI的timeout時間,例如:
http
{
……
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k
fastcgi_buffers 4 64k
……
}
4.重啟FastCGI
先殺掉進程:# pkill -9 php-cgi
然後重啟:# /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -g www -f /usr/local/bin/php-cgi
5.重啟Nginx
先殺掉進程:# killall -9 nginx
然後重啟:# /usr/local/sbin/nginx
其它可能情況:
1)訪問任意PHP文件,出現
The page you are looking for is temporarily unavailable.
Please try again later.
2)訪問html頁面,正常
原因:
nginx不能正常通過FastCGI結果訪問PHP
1)如果是以tcp socket形式,可能是進程用戶權限設置得不對
spawn-fcgi -a 127.0.0.1 -p 9000 -C 2 -u www-data -g www-data -f /usr/bin/php-cgi
可以改為 www-data 或者 nobody, 重啟php-cgi進程
2)如果是unix socket,可能 socket文件權限沒有寫入能力
srwxrwxr-x 1 gavin gavin 0 11-12 10:18 php-fcgi.sock
為其他用戶添加寫入能力
chmod o+w php-fcgi.sock
nginx PHP文件不能正常訪問.
一般nginx默認配置中會是這個樣子的。這裡有一個SCRIPT_FILENAME變量,但是fastcgi_params這個文件中是不包含該變量的,改變量的定義實際上是在fastcgi.conf文件中。
實際上可以把配置修改成如下的配置。
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_intercept_errors on;
include fast_cgi.conf;
#可以增加rewrite,也可以不增加。
}
按如上的配置,如果訪問127.0.0.1:9000/a.php,則實際上根據root指令和fast_cgi.conf配置,nginx會通過fast_pass指令訪問/usr/share/nginx/html/a.php這個文件。
記得用root指令,指定站點的文檔根路徑。
安裝nginx+php後,Php頁面訪問時提示404,但頁面是存在的是怎麼回事?
安裝nginx+php後,Php頁面訪問時提示404,但頁面是存在的,應該是下面的原因造成的:
這個是因為index.html 文件目錄是nginx默認安裝目錄 /usr/local/nginx/html,而info.php 把它放到了 /data/web 下造成的,可以在nginx.conf配置文檔裡面找到相應的問題。
可以按照下面測試更改:
location ~ \.php$ {
root /data/web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
nginx -t nginx -s reload
nginx+php的運行原理:
nginx的worker進程直接管理每一個請求到nginx的網絡請求。
對於php而言,由於在整個網絡請求的過程中php是一個cgi程序的角色,所以採用名為php-fpm的進程管理程序來對這些被請求的php程序進行管理。php-fpm程序也如同nginx一樣,需要監聽端口,並且有master和worker進程。worker進程直接管理每一個php進程。
關於fastcgi:fastcgi是一種進程管理器,管理cgi進程。市面上有多種實現了fastcgi功能的進程管理器,php-fpm就是其中的一種。php-fpm作為一種fast-cgi進程管理服務,會監聽端口,一般默認監聽9000端口,並且是監聽本機,也就是只接收來自本機的端口請求,所以通常輸入命令netstat -nlpt|grep php-fpm 會得到:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1057/php-fpm
這裡的127.0.0.1:9000 就是監聽本機9000端口的意思。
關於fastcgi的配置文件,fastcgi的配置文件一般放在nginx.conf同級目錄下,配置文件形式,一般有兩種:fastcgi.conf 和 fastcgi_params。不同的nginx版本會有不同的配置文件,這兩個配置文件有一個非常重要的區別:fastcgi_parames文件中缺少下列配置:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
可以打開fastcgi_parames文件加上上述行,也可以在要使用配置的地方動態添加,使該配置生效。
當需要處理php請求時,nginx的worker進程會將請求移交給php-fpm的worker進程進行處理,也就是最開頭所說的nginx調用了php,其實嚴格得講是nginx間接調用php。
nginx 反向代理後為什麼訪問php文件 會提示404
在Nginx的配置文件vhost.conf中,加入以下代碼實現rewrite。
若開啟所有規則.則添加如下代碼:
if ($request_filename !~* (.*)\.(css|js|gif|jpg|png|xml))
{
# 修改以下語句中的 /HDwiki 為你的HDwiki目錄地址,如果程序放在根目錄中,請將 /HDwiki 修改為 /
rewrite ^(/HDwiki)/(.*)$ $1/index.php?$2;
}
linux nginx 網站訪問提示502 Bad Gateway怎麼操作?
1、FastCGI進程是否已經啟動
ps aux | grep php
查看是否啟動了php-fpm服務;
2、FastCGI worker進程數是否不夠
運行linux命令:
netstat -anpo | grep “php-cgi” | wc -l
判斷是否接近FastCGI進程,接近配置文件中設置的數值,表明worker進程數設置太少;
3、FastCGI執行時間過長
根據實際情況調高以下參數值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
4、FastCGI Buffer不夠
nginx和apache一樣,有前端緩衝限制,可以調整緩衝參數
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
5、其它原因
出現502的情況太多了,(例如:你服務器目前的配置支撐不了你現有的業務。我有一個朋友服務器是4核8G的,經常一會出現502 Bad Gatewa,又一會正常。CPU和內存經常爆滿接近100%,負載也接近4。最後,配置升級成8核16G後變就變正常了。)遠遠不只是博主所說的這幾種!這幾種只能說是最常用的吧!具體的原因一定要去查看服務器的日誌;
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129997.html