nginx容错相关配置

来源:互联网 发布:python format 编辑:程序博客网 时间:2024/05/01 12:01
1、静态资源不存在时重定向

使用场景:
服务器 A(网站服务器,www.abc.com):请求 cdn.abc.com/a.png
服务器 B(CDN 服务器,cdn.abc.com):接受请求,发现 a.png 不存在,重定向至 www.abc.com/a.png
如果你使用过 W3TC,应该对这个比较熟悉,选择 【Self Hosted CDN】就是这么个效果。


解决方案:

在服务器 B 对应的 nginx 配置文件(一般在 /usr/local/nginx/conf/nginx.conf)中的 server 大括号里增加如下内容:
<span style="font-size:12px;">location ^~ /static/  {    try_files $uri @ppios;}location @ppios  {    rewrite ^(.*)$ http://www.abc.com/$1;}</span>

其中第一个 location 的意思是所有对 static 这个目录下的请求,如果你的文件就放在根目录,也可以写成 location /。甚至如果你只处理静态文件,可以写成 location ~/*/*(gif|png)$ 等等。[1]

括号里面的意思是尝试 serve 这个请求的文件,如果不成功就转到 ppios。

在 ppios 里,我们做了重定向,具体的语法就是标准的正则,不再赘述了。


2、出错后,分发给集群服务器处理

ngx_http_proxy_module 模块中包括proxy_next_upstream指令


语法: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_404 | off ...

默认值: proxy_next_upstream error timeout

上下文: http, server, location

说明:
error # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误 
timeout # 和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现超时 
invalid_header # 后端服务器返回空响应或者非法响应头 
http_500 # 后端服务器返回的响应状态码为500 
http_502 # 后端服务器返回的响应状态码为502 
http_503 # 后端服务器返回的响应状态码为503 
http_504 # 后端服务器返回的响应状态码为504 
http_404 # 后端服务器返回的响应状态码为404 
off # 停止将请求发送给下一台后端服务器

运用场景:

1、当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率,多可运用于前台程序负载,设置proxy_next_upstream

proxy_next_upstream http_500 http_502 http_503 http_504 http_404;

2、因为proxy_next_upstream默认值为proxy_next_upstream error timeout。当访问A时,A返回error timeout时,访问会继续分配到下一台服务器处理,就等于一个请求分发到多台服务器,就可能出现多次处理的情况。

如果涉及到充值,就有可能充值多次的情况,这种情况下就要把proxy_next_upstream关掉

proxy_next_upstream off


0 0
原创粉丝点击