1

나는 Nginx을 부하 분산기로 사용하고 있으며 그 뒤에 응용 프로그램 서버가 있습니다. 앱 서버가 404의 응답을 찾을 수 없다면, nginx은 그 서버의 로컬 인 404 페이지를 서버에 출력하고 싶습니다. 이렇게하면 내 응용 프로그램 서버가 정적 HTML 파일을 제공하지 않고 대신 응답을 빨리 보내고 nginx 정적 파일을 처리하도록 처리 할 수 ​​있습니다. 아무도 내가 이것을 성취 할 수있는 방법을 알고 있습니까? 기본적으로 HTTP 응답을 기반으로 일종의 조건부 검사가 필요합니다. 이것이 가능한가? 감사!로드 밸런서 서버로 nginx 출력 404 응용 프로그램 서버의 HTTP 응답을 기반으로 한 페이지

답변

2

간단히 proxy_intercept_errors 옵션을 켜기로 설정하고 nginx 오류 페이지를 만드십시오. 내가 여기에 있으리라 믿고있어

location /404.html { 
    internal; 
} 

그 nginx를 앱 서버와 이야기 구성되어

error_page 404 /404.html; 

proxy_intercept_errors on; 

그것의 문서 루트에서 정적 파일을 제공합니다 그의 nginx를 보장하기 위해 당신은 또한 다음과 같은 지정해야 왜냐하면 그것은 일반적인 방법이고 귀하의 질문은 이것에 대해 언급하지 않기 때문입니다.

+0

내 응용 프로그램 서버에서 프록시 서버로 nginx를 사용하고 있습니다. 그러나 내가 제안한 변경 사항을 적용하면 앱 서버에서 404를 받으면 로컬에서 제공하는 대신 404.html을 앱 서버에서 요청합니다. 그런 다음 내 응용 프로그램 서버에 404.html이 없기 때문에 두 번째로는 일반적인 nginx 404 페이지를 서버로 처리합니다. nginx가 프록시로 사용되는 서버에서 로컬로 404 문서를 제공 할 수있는 방법을 알고 계십니까? – srchulo

+1

이 답변을 통해 정확한 답변을 얻을 수 있습니다 : http://serverfault.com/questions/426347/nginx-reverse-proxy-error-page – srchulo