У нас есть обратный прокси-сервер NGINX (кластерный) с 45 восходящими потоками (22 домена, 20 поддоменов, 11 приложений).
Некоторые из наших проектов содержат API для некоторых пользователей по всему миру.
Наши разработчики разработали специальные пользовательские ответы 500 для особых случаев и хотят отображать эти сообщения только для апстрима tomcat_api.
Они хотят обслуживать 500 страниц и обрабатывать исключения для участников восходящего потока tomcat_api, а не на NGINX. Но мы хотим обработать все остальные ошибки 5xx на NGINX.
Поскольку мне это не удалось, мне нужна рука прямо сейчас.
Вот конфигурация сервера, не могли бы вы помочь?
server { server_name api.hotcoldwarm.com; location / { add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header x-redirect-uri hotcoldwarm; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; always"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://tomcat_api; proxy_next_upstream error timeout http_502 http_503 http_504 http_404; proxy_connect_timeout 1; } listen 80; listen 443 ssl; ssl_certificate /etc/rapidssl/live/api.hotcoldwarm.com/fullchain.pem; ssl_certificate_key /etc/rapidssl/live/api.hotcoldwarm.com/privkey.pem; include /etc/rapidssl/options-ssl-nginx.conf; if ($scheme != "https") { return 301 https://$host$request_uri; } }
Спасибо.
Вы, наверное, захотите рассмотреть proxy_intercept_errors on;
вариант. Затем настройте индивидуальный error_page
после этого. Посмотреть ответ https://stackoverflow.com/a/8715597/434255