HTTP常见状态码
这里主要介绍运维过程中经常遇到的状态码。并通过业界流行的Nginx进行模拟实现,
让大家能够对HTTP状态码有一个理性的认识(必会,牢记)
1
实验场景
操作系统 centos 7.3
实验用的软件包 nginx php-fmp php http-tools(直接使用yum仓库原生软件包)
yum -y install nginx php-fmp php http-tools
#2xx状态码
2xx 类型的状态码表示一个HTTP请求成功(比如 200)
3xx状态码
3xx 类型状态码主要表示HTTP请求URL重定向行为(常见301,301,304)
301状态码
URL 永久性重定向,在nginx中通过rewrite指令结合permanent标记实现
302状态码
URL 临时重定向,在nginx中通过rewrite指令结合redirect标记实现
301与302的区别
301与302状态码都是URL重定向,其中301是永久,302是临时。不管是永久还是
临时对于用户来说两者没有任何感官上的区别。都是在访问链接A时跳转到了链接B,
并看到浏览器上的地址同样由A变成了B。
它们主要区别在于搜索引擎,搜索引擎是要建立索引规则和权重的,如果链接A
被设定为永久重定向到B,那搜索引擎可以确定A的地址永久改变了,就会
把B当做唯一有效的目标地址。这时搜索引擎会把老地址相关信息带到新地址,
同时在搜索引擎库中彻底废弃原先的老地址,而搜索引擎对于302则没有这样的行为
304状态码
客户端缓存,通过nginx中的expires指令完成
4xx状态码
4xx 类型状态码主要表示客户端错误,客户端发起HTTP请求头不完整,客户使用
的用户名,密码错误等,都会被标记为客户端错误。(常见400,401,403)
400状态码
当web服务器遇到不完整的HTTP请求头时,会返回400状态码。请求头信息或者
Cookis信息过大,通常是导致不完整的请求头的原因。(由web服务器端的配置决定)
在nginx中这类web服务器中,决定这个值的配置字段是
large_client_header_buffers。通过调整这个字段,可以模拟400状态码
401状态码
权限验证错误。就是需要用户名,密码等权限认证,但是客户端又没有通过认证。
在nginx中想要模拟必须将nginx调整为认证模式。
#403状态码
没有权限访问。文件权限过小或者人为设置不允许某个ip地址访问等,都会出现403状态码
#404状态码
文件不存在,当我们访问一个不存在的文件时,就会出现404状态码。
499状态码
499这个状态码不是htto协议中定义的标准状态码,而是nginx自己定义的一个状态码
当客户端主动断开连接的时候,nginx就会返回499的状态码。
按照这个状态码的定义,只要nginx返回结果之前主动断开客户端连接,就会出现499状态码。
#5xx状态码
5xx 类型的状态码主要表示服务端错误,此时就不需要纠结客户端问题
500状态码
服务器端代码出现异常。代码语法错误,连接不上数据库等就会出现500状态码
502状态码
502 Bad Gateway。nginx 502错误的原因比较多,主要是因为在代理模式下
后端服务器出现问题引起的。这个错误一般都不是nginx本身的问题,
一定要从后端找原因。比如出现一种后端PHP-FPM进程挂掉的情况,就会出现502状态码。
504状态码
504 Gateway Time-ou 超时 当PHP-FPM的执行时间大于nginx的读超时时间
,就会出现504状态码
————————————————
版权声明:本文为CSDN博主「Ever_Linux」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Ever_Linux/java/article/details/92416942