ProxyPass가 404를 반환했을 때 Apache Httpd Custom ErrorDocument 404


9

프록시 패스를 사용하여 다른 응용 프로그램 서버 앞에 Apache 웹 서버가 있습니다. 응용 프로그램 요청에서 오류 404가 반환되면 응용 프로그램 서버에서 오는 것이 아니라 웹 서버에서 사용자 정의 오류 페이지를 표시하고 싶습니다. 가상 호스트에서 ErrorDocument 404를 설정하려고했지만 작동하지 않습니다. 어떻게해야합니까? 아니면 불가능합니까?

<VirtualHost *:80>
  ServerName servername
  DocumentRoot /somepath/
  ProxyPass / http://localhost:8080/someapp/
  ProxyPassReverse / http://localhost:8080/someapp/

  ErrorDocument 404 /error.html
</VirtualHost>

답변:


12

!프록시 대상 대신을 지정하여 특정 디렉토리에 대한 프록시를 피할 수 있습니다 . 디렉토리에서 작동하기 때문에 error.html하위 디렉토리 ()로 이동 errors하고 다음을 수행하십시오.

<VirtualHost *:80>
  ServerName servername
  DocumentRoot /somepath/
  ProxyPass /errors !
  ProxyPass / http://localhost:8080/someapp/
  ProxyPassReverse / http://localhost:8080/someapp/
  ProxyErrorOverride On
  ErrorDocument 404 /errors/error.html
</VirtualHost>

죄송하지만 구성에 세부 정보가 부족하지만 프록시 패스에서 반환 된 오류 404를 잡아서 error.html을 대신 표시하는 것이 좋습니다.
hendry.fu

1
감사합니다. 재정의하는 방법을 찾았습니다. ProxyErrorOverride 지시문을 사용할 수 있습니다
hendry.fu

@satyavirya 잘 잡겠습니다. 향후 검색자를위한 답변에 추가하겠습니다.
Shane Madden

ProxyErrorOverride에 대한 힌트에 감사하지만 2.4.11 이전의 Apache 2.4를 사용할 때 이미 수정되어야하는 버그가 있음을 발견했습니다. bz.apache.org/bugzilla/show_bug.cgi?id=53420 ... 아마도 유일한 해결 방법은 프록시 시간 초과를 줄이는 것입니까?!
FibreFoX

ProxyPass /errors !정말 나를 도와 주었다!
NullIsNot0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.