403 - Forbidden
404 - Not Found
500 - Internal Server Error
502 - Bad Gateway
504 - GateWay TimeOut

403 – Forbidden

如果网站出现了错误403 forbidden一般是nginx的服务器屏蔽了客户端的浏览器访问。对你的设备或者IP或者URL各种的限制,是不允许你进行访问。 这是出于某种原因禁止访问的。

Web服务器认为客户端(例如,Web浏览器或我们的设备)发送的HTTP数据流正确,但是出于某些原因,禁止访问URL标识的资源,就会出现了403的错误页面。

解决办法:

a.检查你的Nginx的策略的配置。
b.查看服务器防火墙,看看是否屏蔽了你的IP

404 – Not Found

如果网站出现了404则是域名是有效的但是你访问的url则是无效的,既是此网站没有这个url链接。对于顶级URL(例如www.sky8g.com).

第一种可能性是对站点URL的请求已定向到认为该站点从未有任何页面的Web服务器。如果DNS根本上损坏或者Web服务器的内部记录损坏,则可能发生这种情况。第二种可能性是Web服务器曾经托管过该网站,但现在不再托管它,并且不能或将不提供重定向到现在托管该网站的另一台计算机。如果该站点完全死了-现在实际上在Internet上找不到任何地方-则404消息很有意义。但是,如果站点最近已移动,则也可能会触发404消息。这也是一个DNS问题,因为完全不应再访问旧的Web服务器-全局DNS条目更新后,就仅应访问新的Web服务器。

解决办法:

a.在现有可以访问的域名网站进行url的重写或重建
b.迁移前的服务器和迁移后的服务器的url进行映射
c.如果出现 404错误,并且确认URL没有问题,这个错误原因一般是 http 请求时间超过了
nginx 所配置的最大连接时间,服务器自动断开连接,并返回 404 资源未找到的错误。
更改nginx.conf 配置文件中的 keepalive_timeout 的值(默认65秒)使浏览器和服务器连接时长增大。
为了方便测试,可以改成 600s 即10分钟

500 – Internal Server Error

3.如果遇到了网站打开出现了500的错误,那么大部分是网站后端的代码出现了错误问题,服务器不能执行完成有错误。

HTTP错误500是Web服务器遇到阻止其返回请求的网页的问题时发生的通用HTTP状态代码。Web服务器无法更详细地说明HTTP错误500的原因。也称为内部服务器错误,错误500由您的浏览器报告,但问题出在网站本身。

网站浏览器可能显示如下的500错误。

HTTP Error 500
HTTP Error 500 – Internal Server Error
HTTP Error 500.0 – Internal Server Error
500 Internal Server Error
500 Internal server error
500. That's an error
Internal Server Error
Error 500
Temporary Error (500) 

解决办法:

502 – Bad Gateway

4. 如果出现 502 bad Gateway的原因一般是 php 程序执行超时。 502 Bad Gateway是指错误网关,无效网关;在互联网中表示一种网络错误。

可以在 php-fpm.log 中看到下面一段日志。

[18-Apr-2019 16:25:35] ERROR: failed to ptrace(ATTACH) child 18523: Operation not permitted (1)
[18-Apr-2019 16:25:35] WARNING: [pool www] child 18523, script '/107lab/index.php' (request: "GET /107lab/get-all-option") executing too slow (5.874515 sec), logging
[18-Apr-2019 16:27:10] WARNING: [pool www] child 18523, script '/107lab/index.php' (request: "GET /107lab/get-all-option") execution timed out (101.120333 sec), terminating
[18-Apr-2019 16:27:10] WARNING: [pool www] child 18523 exited on signal 15 (SIGTERM) after 3087.452377 seconds from start
[18-Apr-2019 16:27:10] NOTICE: [pool www] child 18581 started

PHP-fpm 的子进程18523 因为等待了 101.120333 秒后被强制终止了并重新生成了一个新的子进程 18581
但是因为自动生成新子进程,PHP网页还是可以正常访问的,只是该查询任务被终止了。

解决办法:

这里只需要改一下php.ini 里面的 max_execution_time 的值 和 php-fpm.conf 中的 request_terminate_out 的值就可以了。这两项都是用来配置PHP最大执行时间,超时时php-fpm会终止脚本的执行,同时还会终止执行脚本的Worker进程。就像在日志中所看到的样,php-fpm child 18523 被终止后重新生成了新的worker进程18581,所以 nginx 发现与自己通信的连接断了,就自然会返回502错误给客户端。

php.ini配置

max_execution_time = 600

php-fpm.conf配置

request_terminate_timeout = 600

504 – GateWay TimeOut

504错误是(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
服务器(不一定是 Web 服务器)正在作为一个网关或代理来完成客户(如您的浏览器或机器人)访问所需网址的请求。 为了完成您的 HTTP 请求, 该服务器访问一个上游服务器, 但没得到及时的响应。
这通常意味着上游服务器已关闭(不响应网关 / 代理),而不是上游服务器和网关 / 代理在交换数据的协议上不一致。
正常情况下,是由于被请求服务器发送超时引起。

一般情况是产生504错误的原因是 nginx 转发给 fastcgi 的请求没有在限制时间(默认60s)内的到响应。

解决办法:

location ~ \.php$ {
 root html;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_connect_timeout 600;
 fastcgi_read_timeout 600;
 fastcgi_send_timeout 600;
 include fastcgi_params;
}
所有评论
加载评论 ...
发表评论