Назад | Перейти на главную страницу

Как правильно использовать поддержку эха nginx для ответа встроенной страницей 504?

Я пытаюсь ответить пользовательской страницей 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».