nginx故障(nginx故障请求转发)
nginx故障
1、首先,在浏览器上按F12,Network栏目,查看接口的响应状态,如果是failed,则可能是几种原因:
1.可能是自己网络断了
2.可能是自己的服务挂了
3.可能是服务器挂了
2、如果status返回的状态是404,则是路径写的不正确,访问不到后台路径,这个时候服务器返回404。
3、如果status返回的状态是500,则是服务器内部发生错误,这个时候要找后台开发人员定位一下原因,也有可能是请求方式写错了,可能将Post请求写成了Get请求。
4、如果status返回的状态是502,可能是代理服务器关闭,这个时候如果用的是nginx服务器要检查一下服务器有没有关闭。或者查看一下nginx的启动进程是不是多个,如果是多个的话全部杀掉,然后重新启动nginx
5、如果返回的是403,则表示无权访问服务器上的资源,可能是没有token,或者token失效。
6、如果返回的是400,则可能是发往后台的数据格式错误,比如后台用的是一个对象接受参数,结果你传参了一个字符串,所以可能会报400错误。
nginx故障请求转发
在开发静态页面时,类似Vue的应用,我们常会调用一些接口,这些接口极可能是跨域,然后浏览器就会报cross-origin问题不给调。
最简单的解决方法,就是把浏览器设为忽略安全问题,设置--disable-web-security。不过这种方式开发PC页面到还好,如果是移动端页面就不行了。
解决办法
使用Nginx转发请求。把跨域的接口写成调本域的接口,然后将这些接口转发到真正的请求地址。
其实不仅是在开发调试时候能这么干,在生产环境也能这么玩。利用Nginx转发请求之后,就能够让所要部署的静态页面不需要放在跟请求接口同域的地方。
nginx故障恢复
1/7
首先,在浏览器上按F12,Network栏目,查看接口的响应状态,如果是failed,则可能是几种原因:
1.可能是自己网络断了
2.可能是自己的服务挂了
3.可能是服务器挂了
2/7
如果status返回的状态是404,则是路径写的不正确,访问不到后台路径,这个时候服务器返回404
3/7
如果status返回的状态是500,则是服务器内部发生错误,这个时候要找后台开发人员定位一下原因,也有可能是请求方式写错了,可能将Post请求写成了Get请求
4/7
如果status返回的状态是502,可能是代理服务器关闭,这个时候如果用的是nginx服务器要检查一下服务器有没有关闭。或者查看一下nginx的启动进程是不是多个,如果是多个的话全部杀掉,然后重新启动nginx
5/7
如果返回的是403,则表示无权访问服务器上的资源,可能是没有token,或者token失效
6/7
如果返回的是400,则可能是发往后台的数据格式错误,比如后台用的是一个对象接受参数,结果你传参了一个字符串,所以可能会报400错误
7/7
当然响应码远远不止这些,这几个都是开发过程当中常见的错误码
nginx故障处理
基本可以替代。
TCP代理:两个都有。
HTTP代理:两个都有。
这两个的差别主要在于:Haproxy会对后端服务器一直做健康检测,NG没有。
后端机器故障发生在请求还没到来的时候:
haproxy:会将这台故障机切掉,但如果后端机器故障发生在请求到达期间,那么前端访问会有异常。也就是说HAProxy会把请求转到后端的这台故障机上,并经过多次探测后才会把这台机器切掉,并把请求发给其他正常的后端机,这势必会造成一小段时间内前端访问失败。
Nginx:在请求过来的时候,分发还是会正常进行分发,只是请求不到数据的时候,它会再转向好的后端机器进行请求,直到请求正常为止。也就是说Nginx请求转到后端一台不成功的机器的话,还会再转向另外一台服务器,这对前端访问没有什么影响。
所以在高并发的情况下,Haproxy会比nginx略差。
nginx故障节点的摘除与恢复
作用:当一台机器宕机时,另外一台机器接管机器的IP资源和服务资源,提供服务。常用于不易实现负载均衡的应用,比如在均衡器,主数据库,主存储之间高可用性集群常用的软件包括keepalived heartbeat等。
负载均衡集群:负载均衡集群为了提供更为实用,性价比更高的系统架构解决方案,可以把很多客户集中的访问请求尽可能平均分摊在计算机集群中处理。
高可用性集群:在集群任意一个节点失效的情况下,该节点的所有任务会自动转移到其他正常的节点上,并且不影响真个集群的运行。
高性能计算集群:通常,高性能计算集群设置为集群开发的并行应用程序,以解决负复杂的科学问题(天气预报,石油勘探,核反应模拟等)
nginx故障转移
用户未缴纳续费迁移等情况下
nginx常见报错
第一种:Nginx自己的错误页面
Nginx访问一个静态的html 页面,当这个页面没有的时候,Nginx抛出404,那么如何返回给客户端404呢?
看下面的配置,这种情况下不需要修改任何参数,就能实现这个功能。
server {
listen 80;
server_name www.test.com;
root /var/www/test;
index index.html index.htm;
location / {
}
# 定义错误页面码,如果出现相应的错误页面码,转发到那里。
error_page 404 403 500 502 503 504 /404.html;
# 承接上面的location。
location = /404.html {
# 放错误页面的目录路径。
root /usr/share/nginx/html;
}
}
第二种:反向代理的错误页面
如果后台Tomcat处理报错抛出404,想把这个状态叫Nginx反馈给客户端或者重定向到某个连接,配置如下:
upstream www {
server 192.168.1.201:7777 weight=20 max_fails=2 fail_timeout=30s;
ip_hash;
}
server {
listen 80;
server_name www.test.com;
root /var/www/test;
index index.html index.htm;
location / {
if ($request_uri ~* ‘^/$’) {
rewrite .* http://www.test.com/index.html redirect;
}
# 关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面
proxy_intercept_errors on;
proxy_pass http://www;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
}
第三种:Nginx解析php代码的错误页面
如果后端是php解析的,需要加一个变量
在http段中加一个变量
fastcgi_intercept_errors on就可以了。
指定一个错误页面:
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
指定一个url地址:
error_page 404 /404.html;
error_page 404 = http://www.test.com/error.html;
nginx故障自动切换
原因和排查方法如下
一、检查光纤室内部分和光猫插头是否松脱。 二、用光功率计检测光纤内传输的光是否正常。 1、如果光功率计检测光纤收光正常,那就是光猫有问题,需要更换光猫。 2、如果光功率计检测光纤收无光或收光功率过低,那就是光纤中断或光纤有弯折过大的地方光纤是否有弯折过大地方(光纤内传输的是光信号,如果光纤弯折过大,会影响光全反射往前传输)。或者是运营商机房端设备故障导致。
nginx故障排查
nginx有session时间 ,可以有三种方式进行失效设置,在web容器中设置, 在自己工程的web.xml中设置,通过Java代码设置,指定客户端可以重用会话参数的时间(超时之后不可使用),这充分说明了ng inx里是有session时间的。nginx里是存在一致性问题的,是可以实现session共享的,反向代理时的超时时间设置,也可以实现同步,沾滞。
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.