Я пытаюсь ответить пользовательской страницей 504, используя поддержку эха nginx, но по какой-то странной причине, когда она активна, браузер загружает ответ, а не открывает его.
server {
listen 80;
proxy_intercept_errors on;
server_name localhost;
location @fallback {
add_header Content-Type "text/html; charset=UTF-8";
add_header Content-Disposition 'inline; filename="504.html"';
# when this line is enabled I get the download behavior!
# when this is not active, I get a 200 response, which is not desired
echo_status 504;
echo "<!DOCTYPE html>";
echo "<html lang='en'>";
echo " <head>";
echo " <meta charset='utf-8'>";
echo " <title>Backend is down</title>";
echo " </head>";
echo " <body>";
echo " Backend service is offline, please retry in few minutes. $echo_timer_elapsed";
echo " </body>";
echo "</html>";
}
location / {
error_page 502 504 = @fallback;
proxy_connect_timeout 10s;
proxy_pass http://google.com:1234;
}
}
Привет, я тестировал сегодня модуль echo с аналогичной конфигурацией для пользовательского "403" ...
Я не мог правильно прочитать документацию, и поиск в Google привел меня к вашему вопросу.
Se: http://wiki.nginx.org/HttpEchoModule#Content_Handler_Directives
Вместо использования add_header Content-Type попробуйте:
default_type "текст / html; charset = UTF-8";
Я не уверен, следует ли ожидать, что add_header будет работать, но он не упоминается в руководстве модуля. [edit]: также default_type, скорее всего, уже установлен в глобальной конфигурации nginx как: default_type application / octet-stream; Я забыл об этом, так что лучше изменить его здесь, если вы хотите видеть ответ в браузере. [/ Edit]
* Примечание: вы все равно должны сохранить "echo_status 504;" если вы не хотите видеть, получите ответ «200».