大家在搭建网站时经常会遇到各类问题, 其中最常见的就是各类40X、50X报错,这里简单介绍一下各类报错的意义以及解决方法。
在介绍报错前,先简单介绍下http协议的常见返回码,这些返回码可以通过http抓包工具(如fiddler、httpwatch、各类浏览器的F12按钮)抓包看见。我们访问一个网站的时候,就是向着该网站服务器发送一个http请求,如果服务器有开设web服务(apache、nginx、IIS等)那么服务器会在处理完这个请求后返回一个http返回码,最常见的包括 200、301、302、403、404、500、503。
返回码:200
返回码含义:请求成功。正常访问网页得到的返回信息。
返回码:301、302
返回码含义:URL 重定向。访问的指定 URL 被重定向到另外 URL。通常是网站代码自 身逻辑,rewrite 规则也可设置。
返回码:403
返回码含义:被拒绝。服务器理解请求客户端的请求,但是拒绝执行此请求。通常是 目录没有相应的权限或者缺少 index 页面导致,特殊情况由于配置权限问题导致。
解决方案:
1、linux系统下将web目录权限设置大一些chmod-R 777 /var/www/html;
2、在web服务配置文件中,找到关键字为DirecotryIndex的配置行,将对应的index文件(如 index.php)添上;
3、在windows服务器中修改目录的权限配置,将IIS_User以及IUSER 2个用户的读写权限赋予目录。
返回码:404
返回码含义:没找到资源。所请求的资源路径不存在。通常是由于网站根目录中没有对应的资源导致,特殊情况有可能由于未部署php环境缺运行php代码导致。
解决方案:1、将资源整理清楚、明确;
2、部署好php环境。
返回码:500
返回码含义:服务器内部错误,无法完成请求。此类错误多出现于windows IIS 服务器,500 错误是许多错误的统称,比较纠结,这里无法覆盖到所有错误,只能提供一个定位 500 错误的思路。解决方案:在IIS配置页中,将详细错误开启,这样即可看到 500 的真实报错情况,然后具体错误具体分析。
返回码:503
返回码含义:服务不可用。通常是由于服务器负载较高或者连接数过多,导致无法正 常处理请求。
解决方案:
1、检查服务器连接数 END {for(a in S) print a, S[a]}' 2、常见情况可能是由于time wait连接数过多,占用了tcp 连接资源池,可从代码角度入手优化,也可从服务器内核进行参数设置;
2、linux系统中执行:vi/etc/sysctl.conf将
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fin_timeout=30
四行配置写如到文件中执行:netstat -n | awk '/^tcp/ {++S[$NF]}