首页 > 代码库 > 总结403到504的常用问题
总结403到504的常用问题
################ 总结 403 Forbidden ##############
1. nginx配置文件里不配置默认首页参数或者首页文件在站点目录下没有
譬如:没有配置 index index.php index.html index.htm;
2. 站点目录或内部的程序文件没有Nginx用户访问权限
譬如: chmod 700 index.php 或者 chmod 700 db2 无法读取文件
3. Nginx配置文件中设置allow、deny等权限控制,导致客户端没有没权限访问,即屏蔽某个ip访问.
譬如:在server中
allow 192.168.1.0/24;
deny all;
################ 总结 502 Bad Gateway ##############
1. 502错误一般不是nginx错误,一般是后端有问题。nginx背锅了。
2. 后端主机宕机,error timeout
3. PHP FastCGI进程数不够用,如果接近预设的进程数就不够用.(netstat -anpo | grep "php-fpm" | wc -l)
4. 部分PHP程序的执行时间超过了Nginx的等待时间.(适当修改nginx.conf中的fastcgi的timeout时间),譬如:fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300。。。。
5. PHP的内存是否不足(譬如修改了php.ini的memory_limit为64M)
6. 调整php-fpm.conf参数:max_children最多10个进程,按照每个进程20MB内存,最多200MB。request_terminate_timeout执行的时间为60秒,也就是1分钟。
7. mysql有瓶颈
################ 总结 503 ##############
1. 服务不可用
2. 出现503错误多半是因为网站访问量大,造成了流量超限或者并发数大引起的资源超限出现的错误。
3. 如果网站程序没有问题,可能空间有过多的限制造成了系统资源不足引起的错误,可以考虑换空间了。
4. 如果空间没有问题,那么就要仔细检查网站程序是否有死循环或者内存泄露等问题。
5.
nginx里的访问限制:
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 800;
参数$binary_remote_addr:表示以客户端ip作为键值来进行限制
参数zone=addr:5m:表示生成一个大小为5M,名字为addr的存储区域,用来存储访问次数
参数addr 800:表示在addr存储区内,限制客户端ip只能访问800次,若超过访问限制,则返回503错误。
################ 总结 504 ##############
1. 网关超时
Nginx 504错误(Gateway time-out 网关超时)的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI】
一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out。
现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K,默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点,
在nginx.conf里, 加入:
fastcgi_buffers 8 128k
这表示设置fastcgi缓冲区为8×128k
当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:
send_timeout 60;
Nginx 502与504的区别:
Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。
Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。
解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。
本文出自 “开发与运维” 博客,谢绝转载!
总结403到504的常用问题