Hi!
Хочу обрабатывать все 50x ошибки от бэкендов в отдельном бэкенде. В этом отдельном бэкенде хочу выводить разные custom страницы в зависимости от ошибки и location.
Сделал так:
--vhost config--
upstream backends {
server first.backend.com:80;
server second.backend.com:80;
}
server
{
listen bla-bla:80;
server_name bla-bla.com;
location /
{
proxy_pass http://backends;
}
# при 50x идем в именованный location
error_page 500 502 503 504 @error_pages_back;
{skip}
# именованый location с проксированием на бэкенд
# для обработки ошибки
location @error_pages_back {
proxy_intercept_errors on;
recursive_error_pages on;
proxy_pass http://127.0.0.1:9876;
proxy_set_header Host $host;
proxy_buffering off;
proxy_cache off;
}
}
---vhost config---
теперь конфиг бэкенда, в котором вопрос - как это сделать :)
Если я указываю return 50x в нужном location, то это работает, но нет связи с оригинальной ошибкой (это и понятно, что сказал в return, то и отдали). Однако, если я не использую return, то каким образом мне проверить в бэкенде номер оригинальной ошибки и потом вывести соответствующий 50x.html?
server
{
listen 127.0.0.1:9876;
server_name localhost;
index 500.html;
root /usr/local/www/error_pages;
access_log /var/log/nginx/errors/access.log main;
error_log /var/log/nginx/errors/error.log notice;
location /error_pages/ {
root /usr/local/www;
internal;
}
error_page 500 502 503 504 /error_pages/500.html;
location /
{
return 502;
}
location /xhtml
{
return 502;
error_page 500 503 504 /error_pages/xhtml500.html;
error_page 502 /error_pages/xhtml502.html;
}
}
PS. nginx-0.7.64