Nginx возвращает 502 Bad GateWay + requestUrl, когда HTTP-запрос возвращает код состояния 502

Я хочу реализовать функцию.

Nginx возвращает "502 Bad GateWay" + requestUrl, когда HTTP-запрос возвращает код состояния 502.

Как настроить 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";
 }

person xuefeng Yang    schedule 03.01.2019    source источник


Ответы (1)


Вам нужна директива proxy_intercept_errors.
Значение этой директивы по умолчанию - off. Вы должны включить его on, если хотите перехватить ответ от прокси-сервера с кодом состояния больше / равным 300 (конечно, включая 502). Подробнее об этой директиве.

Вот пример файла конфигурации, который я тестировал.

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.
  }
}

После перезагрузки 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

Я добавил некоторые пояснения в конфигурацию. Надеюсь, это поможет.

person Light.G    schedule 09.01.2019
comment
благодарю вас ! Наконец решил проблему с lua скриптом. Спасибо. - person xuefeng Yang; 25.01.2019
comment
@xuefengYang Вы можете написать свой ответ, если решите эту проблему. - person Light.G; 25.01.2019
comment
код такой: 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) proxy_intercept_errors on ; error_page 502 /502.html; location =/502.html { content_by_lua_file "/usr/local/nginx/lua/auth/404.lua"; } - person xuefeng Yang; 26.01.2019