Http 서버에서 웹 애플리케이션 오류 메시지 제공

Http 서버에서 웹 애플리케이션 오류 메시지 제공

나는 Tomcat을 백엔드로 사용하는 http 서버로 nginx를 사용합니다 (proxy_pass 사용). 훌륭하게 작동하지만 내 자신의 오류 페이지(404, 500 등)를 정의하고 Tomcat이 아닌 nginx에서 제공되도록 하고 싶습니다. 예를 들어 다음 리소스가 있습니다.

https://domain.com/resource

존재하지 않는 것입니다. 해당 URL을 [GET]하면 nginx가 아닌 Tomcat에서 찾을 수 없음 메시지를 받습니다.

내가 원하는 것은 Tomcat이 404(또는 다른 오류 메시지)로 응답할 때마다 nginx가 사용자에게 메시지를 보내는 것입니다: nginx가 액세스할 수 있는 일부 html 파일입니다.

nginx 서버를 구성하는 방법은 매우 쉽습니다.

location / {
    proxy_pass   http://localhost:8080/<webapp-name>/;
}

그리고 Tomcat인 포트 8080을 이 컴퓨터 외부에서 액세스할 수 없도록 구성했습니다.

locationURL에 의존하는 일부 리소스가 있기 때문에 nginx 구성에서 다른 지시문을 사용하는 것이 작동하지 않을 것이라고 생각합니다 .

https://domain.com/customer/<non-existent-customer-name>/[GET]

다음과 같은 경우 항상 404(또는 기타 오류 메시지)를 반환합니다.

https://domain.com/customer/<existent-customer>/[GET]

404(고객이 존재함)와 다른 것을 반환합니다.

Nginx(http 서버)로 Tomcat(응용 프로그램 서버) 오류 메시지를 제공할 수 있는 방법이 있습니까? 지시어가 보낸 메시지를 확인 proxy_pass하고 이에 따라 조치를 취하려면?

답변1

알았어, 찾았어. server내가 사용하고 있는 nginx 사이트 구성 섹션 에서 :

error_page 404 /404.html;
location = /404.html {
    root /var/www/nginx;
}

location / {
    proxy_pass http://localhost:8080/api/;
    proxy_intercept_errors on;
}

proxy_intercept_errors onnginx에 추가해야 합니다 .그들을 가로채다. Nginx는 error_page.

관련 정보