nginx 가 말 하지 않 을 수 없 는 인자 의 이 유 는 nginx errorpage 백 엔 드 오류 가 발생 했 을 때 뛰 지 않 습 니까?

3775 단어 nginx
nginx 가 말 하지 않 을 수 없 는 인자 의 proxyintercept_errors 와 fastcgiintercept_errors
     왜 나의 errorpage 설정 이 적용 되 지 않 았 습 니 다. 정상적으로 이동 하지 않 았 습 니까?나 도 이 문제 에 부 딪 힌 적 이 있어 서 proxyintercept_errors 와 fastcgiintercept_errors 라 는 두 매개 변 수 를 상세 하 게 이해 했다.
  저희 업 체 와 평가 정보 와 관련 된 웹 응용 은 사용자 에 게 소비 결정 을 내 리 는 업 체 와 관련 평가 등 정보 이기 때문에 조회 기능 은 상호작용 기능 보다 중요 하지만 일부 내부 오류 로 인해 전체 응용 에 이상 이 생 겨 사용자 가 업 체 의 관련 정 보 를 쉽게 볼 수 없습니다.
 업 체 페이지 의 가용성 을 향상 시 키 기 위해 저 희 는 정적 캡 처 를 통 해 기 존 페이지 를 정적 파일 서버 에 저장 하고 응용 서버 nginx 에 관련 규칙 을 설정 합 니 다. 응용 에 이상 이 있 을 때 사용자 의 요청 을 강등 용도 의 정적 파일 서비스 기 에 전송 합 니 다.
전체 규칙 설정 과정 에서 일부 문 제 를 발 견 했 습 니 다. 바로 nginx 에 관련 error 를 설정 한 것 입 니 다.page 의 점프 페이지 에서 백 엔 드 응용 이상 을 발 견 했 을 때 예상 되 는 nginx 점프 규칙 이 적용 되 지 않 았 습 니 다.
    error_page                    500 501 502 503 504 @shopstatic;
    location                      @shopstatic {
      access_log                  logs/shop-web.access.log       maintry;
      proxy_pass                  http://shopstaticservers;
    }

Google 업무 응용 프로그램 은 nginx + 자바 용기 의 구조 형식 을 사용 합 니 다. nginx 는 역방향 프 록 시 와 로그 기록 을 합 니 다. 사용자 가 서버 에 도착 하 기 를 요청 할 때 nginx 설정 의 루트 디 렉 터 리 에 해당 하 는 정적 파일 이 있 는 지, 존재 하지 않 을 때 백 엔 드 자바 용기 server 로 전송 합 니 다.우 리 는 nginx 에 error 를 설정 했다.page 이상 점프 규칙 은 백 엔 드 자바 용기 에 이상 오류 가 발생 했 을 때 대응 하 는 요청 이 nginx 에 의 해 정적 으로 강 등 된 서비스 로 전 송 될 것 으로 예상 되 지만 실제 백 엔 드 자바 용기 에 이상 이 발생 하거나 과부하 가 발생 했 을 때 nginx 는 자바 용기 백 엔 드 의 이상 정 보 를 직접 토 합 니 다.
이런 특이 한 nginx 규칙 을 처음 설정 해서 무슨 이유 인지 모 르 겠 습 니 다. 구 글 에서 한참 동안 검색 해 보 았 습 니 다. 상황 도 잘 모 르 고 설명 도 잘 못 해서 얻 은 것 이 없 었 습 니 다. 나중에 키워드 error 를 사 용 했 습 니 다.page proxy 검색 이 끝 났 습 니 다. 한 외국인 이 비슷 한 질문 에 대답 하여 proxy 에 게 주 었 습 니 다.intercept_errors on;이 설정 을 직접 해 보 니 정말 ok 입 니 다.
질문 하 는 법 을 배 우 는 것 이 야 말로 자신 이 노력 해 야 할 방향 이라는 것 을 알 게 되 었 다.
nginx proxy 사용자 정의 오류 페이지 사용 하기:
proxyintercept_errors on | off;
기본 값:
proxy_intercept_errors off;
문맥: http, server, location
프 록 시 된 백 엔 드 서버 의 응답 상태 코드 가 300 보다 클 라 이언 트 에 직접 응답 을 보 낼 지, 아니면 nginx 에 응답 을 error 로 전송 할 지 결정 합 니 다.page 명령 으로 처리 합 니 다.
원문:
syntax:proxy_intercept_errors on | off;
default:
proxy_intercept_errors off;
context:http, server, location
Determines whether proxied responses with codes greater than or equal to 300 should be passed to a client or be redirected to nginx for processing with the error_page directive.
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors
proxy_intercept_errors 는 on 으로 nginx 가 원래 response code 에 따라 출력 되 고 백 엔 드 는 404 이 며 404 입 니 다. 이 변 수 를 열 어야 오류 페이지 를 사용자 정의 할 수 있 습 니 다.
문법: fastcgiintercept_errors on | off;
기본 값:
fastcgi_intercept_errors off;
문맥: http, server, location
FastCGI 백 엔 드 서버 응답 상태 코드 가 300 이상 이면 백 엔 드 클 라 이언 트 에 응답 을 직접 보 내 거나 nginx 에 응답 을 error 로 전송 할 지 여 부 를 결정 합 니 다.page 명령 으로 처리 합 니 다.
원문:
syntax:fastcgi_intercept_errors on | off;
default:
fastcgi_intercept_errors off;
context:http, server, location
Determines whether FastCGI server responses with codes greater than or equal to 300 should be passed to a client or be redirected to nginx for processing with the error_page directive.
http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors
fastcgi_intercept_errors on 은 fastcgi 출력 을 받 은 http 1.0 response code 를 표시 합 니 다. 백 엔 드 phop 은 header 를 출력 하여 nginx 가 어떤 오류 페이지 를 출력 하 는 지 표시 할 수 있 습 니 다.이것 을 열 어야 php 에서 오류 코드 와 페이지 를 사용자 정의 할 수 있 습 니 다.
분명히 error 에 있어 야 합 니 다.page 에서 지정 한 처리 방법 은 이 매개 변 수 를 유효 하 게 합 니 다. 적당 한 처리 방법 이 없 으 면 nginx 는 오 류 를 차단 하지 않 습 니 다. 이 오 류 는 자신의 기본 페이지 를 표시 하지 않 습 니 다. 여 기 는 어떤 방법 으로 오 류 를 차단 할 수 있 습 니 다.
이 매개 변 수 는 대부분 사람들 이 알 아야 한다 고 생각 했 지만 많은 사람들 이 모 르 는 것 을 발견 하고 다시 썼 다.

좋은 웹페이지 즐겨찾기