Настройте NGINX: как обрабатывать 500 ошибок на самом апстриме, в то время как Nginx обрабатывает другие ошибки 5xx

У нас есть обратный прокси-сервер NGINX (кластерный) с 45 восходящими (22 домена, 20 поддоменов, 11 приложений).

Некоторые из наших проектов содержат API для некоторых пользователей по всему миру.

Наши разработчики разработали специальные пользовательские 500 ответов для особых случаев и хотят показать, что сообщения только для tomcat_api upstream.

Они хотят обслуживать 500 страниц и обрабатывать исключения для вышестоящих членов tomcat_api, а не для NGINX. Но мы хотим обработать все остальные ошибки 5xx на NGINX.

Поскольку я не могу преуспеть, нужна рука прямо сейчас.

Вот конфигурация сервера, не могли бы вы помочь?

 сервер { 
  имя_сервера api.hotcoldwarm.com;

  место нахождения / {
    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; всегда";
    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 http_502 http_503 http_504 http_404;
    proxy_connect_timeout   1;
  }
    слушай 80;
    слушай 443 песни;
    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 ($ схема! = "https") {
        return 301 https: // $ host $ request_uri;
    }

}

Спасибо.

1 ответ

Решение

Вы, вероятно, хотите рассмотреть proxy_intercept_errors on; вариант. Затем настройте кастом error_page после этого. Смотрите ответ https://stackoverflow.com/a/8715597/434255

Другие вопросы по тегам