프록시 대상을 사용할 수없는 경우 Nginx 로컬 폴백 오류 페이지


9

Nginx 서버를 통해 로컬 서비스에 요청을 전달하고 있습니다. 내가 지금하려고하는 것은 서비스를 사용할 수없는 경우 로컬 오류 페이지로 폴백하는 것입니다.

내 현재 구성은

server {
    listen       80;
    server_name  "";

    location / {
        proxy_pass  http://127.0.0.1:9080;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 1;
        proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;
        proxy_intercept_errors on;
    }

    error_page 501 502 503 @maintenance;
    location @maintenance {
            root   /locust/www/fallback/htdocs;
            index  index.html index.htm;
    }
}

프록 싱은 작동하지만 9080에서 서비스를 사용할 수 없게되면 유지 관리 위치의 index.html이 표시되지 않습니다.

이 구성에 어떤 문제가 있습니까?

답변:


12

실제로 구성을 약간 수정해야했습니다.

error_page 501 502 503 /500.html;
location = /500.html {
        root   /locust/www/fallback/htdocs;
}

index.html제시하고자하는 이름을 변경하십시오 500.html.


1
이 접근 방식을 사용하면 proxy_pass에서 실행중인 응용 프로그램에서 501, 502 또는 503이 발생하면 어떻게됩니까? Django와 같은 일부 응용 프로그램은 자체 50x 오류를 처리하므로 사용자 정의 오류 페이지를 가질 수 있습니다. 여기에서 접근 방식이 Nginx 500.html 페이지에서 응용 프로그램이 50x 오류 페이지를 생성하는 것보다 낫습니까?
Joe J

나는 그것을 테스트하지는 않았지만 99 % 확신합니다. 그러한 오류는 /500.html을 정확하게 표시합니다. 아이디어는 nginx가 프록시 서버에서 501 502 503을 받으면 /500.html을 표시한다는 것입니다. 프록시 서버는 장고입니다.
nuts

1

오류 페이지의 정확한 URL을 다음과 같이 지정하십시오.

    proxy_intercept_errors on;
    error_page  500 502 503 504 402 403 401  /500.html;
    root   /locust/www/fallback/htdocs;

아니. :( 두 위치에서 구성 변경을 시도했지만 성공하지 못했습니다.
Dennis Winter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.