技术解析

nginx 502 问题, 能监控下来转发到其他页面吗?
0
2021-05-20 23:47:23
idczone

如题: 当 访问 大带宽服务器www.java.sx/love 这个 url 时 服务器出问题 这时候 nginx 502 了,

能不能 把请求又转发到 www.java.sx/fvcklove 呢?? 也就是说 www.java.sx/fvcklove 其实是备用的

如何配置,感谢您的帮助。 呼啦啦,黑魔法 --》


没问题, 如果整体的话, 直接给 nginx 设置一个 error_page 502 页面就可以了。
如果针对某个 URL 的话,也很简单 用 openresty 很简单就实现了。
在 header_filter 或者 body_filter 阶段
if ngx.status == 502 then
xxxxxxx
end

不要用 if, error_page 即可
http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page

如果是针对 某一个 url 呢?

感谢回复 请问如果 是 针对某一个 指定的 url 呢

nginx 后面还有 proxy/fastcgi 到后端吗?

![]( )

使用 upstream ,然后 proxy 反向代理时指定特定 http code 发送到 upstream 内的其他服务器
例如 proxy_next_upstream error timeout http_500 http_502 http_503 http_504;

如果和请求页是不同的页面,用 error_page ,
如果和请求页相同的其他服务器,用 proxy_next_upstream ,但是注意,动态请求有坑, nginx 超时时间是 60 秒。

proxy_next_upstream 可能会使同一个动态请求,请求 1 次以上。

server {
listen 80;
server www.java.sx;
location / {
proxy_pass http://backend:8888;
....

proxy_intercept_errors on;
error_page 502 = {
保持网址不变
rewrite /love /fvcklove break;
或者跳转到 fvcklove ,那么 part1,part2 部分就不再需要
rewrite /love /fvcklove redirect;
{{ part1
proxy_pass http://localhost;
proxy_set_header Host do502-for.www.java.sx;
proxy_redirect off;
}}
}
}
{{ part2
server {
listen 80;
server do502-for.www.java.sx;
location / {
return 502; 默认返回 502
}
特殊页
location = /fvcklove {
proxy_pass http://backend:8888;
proxy_redirect off;
....
这里不能再捕获 502
}
}
}}

error_page 502 /xxxx

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服