如题:
当 访问 大带宽服务器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