本文目录一览:
- 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后变就变正常了。)远远不只是博主所说的这几种!这几种只能说是最常用的吧!具体的原因一定要去查看服务器的日志;