[英]Nginx returns “502 Bad GateWay” + requestUrl when HTTP request returns 502 status code
I want to implement a function. 我想实现一个功能。
Nginx returns "502 Bad GateWay" + requestUrl when HTTP request returns 502 status code 当HTTP请求返回502状态代码时,Nginx返回“ 502 Bad GateWay” + requestUrl
How to configure nginx to achieve this function, thank you. 怎样配置nginx来实现这个功能,谢谢。
#/usr/local/nginx/lua/auth/404.lua
ngx.say("502 Bad GateWay ")
local request_method = ngx.var.request_method
ngx.say(request_method)
local request_uri = ngx.var.request_uri
ngx.say(request_uri)
#nginx.conf
proxy_intercept_errors on ;
error_page 502 /502.html;
location =/502.html {
content_by_lua_file "/usr/local/nginx/lua/auth/404.lua";
}
You need the proxy_intercept_errors
directive. 您需要
proxy_intercept_errors
指令。
The default value of this directive is off
. 此伪指令的默认值为
off
。 You must turn it on
if you want to intercept response from proxied server with status code bigger/equal than 300(of course, 502 included). 如果要拦截状态代码大于/等于300(当然包括502)的代理服务器的响应
on
则必须将其on
。 More details about this directive . 有关此指令的更多详细信息 。
Here is an example configuration file which I've tested. 这是我测试过的示例配置文件。
upstream tomcat502 {
server 10.10.100.131:28889; # There is no such a backend server, so it would return 502
}
server {
listen 10019; # it's up to you
server_name 10.10.100.133;
location /intercept502 {
proxy_intercept_errors on; # the most important directive, make it on;
proxy_pass http://tomcat502/;
error_page 502 = @502; # redefine 502 error page
}
location @502 {
return 502 $request_uri\n; # you could return anything you want.
}
}
After reloading nginx, use curl
to test it. 重新加载nginx之后,使用
curl
进行测试。
[root@test133 lunatic]# curl http://10.10.100.133:10019/intercept502
/intercept502
[root@test133 lunatic]# curl http://10.10.100.133:10019/intercept502 -I
HTTP/1.1 502 Bad Gateway
Server: nginx/1.12.1
Date: Wed, 09 Jan 2019 13:48:05 GMT
Content-Type: application/octet-stream
Content-Length: 14
Connection: keep-alive
I have added some explanation up in configuration. 我在配置中添加了一些解释。 Hope it would help.
希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.