Apache HTTPd Custom ErrorDocument 404 Khi ProxyPass trả về 404


9

Tôi có một máy chủ web Apache trước một máy chủ ứng dụng khác, sử dụng Proxy Pass. Khi yêu cầu ứng dụng trả về lỗi 404, tôi muốn hiển thị trang lỗi tùy chỉnh từ máy chủ web chứ không phải trang đến từ máy chủ ứng dụng. Tôi đã cố gắng thiết lập ErrorDocument 404 trên máy chủ ảo, nhưng nó không hoạt động. Làm thế nào tôi nên làm điều này? Hoặc điều này là không thể?

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

  ErrorDocument 404 /error.html
</VirtualHost>

Câu trả lời:


12

Bạn có thể tránh việc ủy ​​quyền cho một thư mục cụ thể bằng cách chỉ định một !vị trí của mục tiêu proxy. Vì nó hoạt động trên một thư mục, hãy chuyển error.htmlsang thư mục con (chúng tôi sẽ nói errors) và:

<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>

Xin lỗi, có thể cấu hình thiếu một số chi tiết, nhưng điều tôi muốn là bắt lỗi 404 được trả về từ thẻ proxy và thay vào đó hiển thị error.html.
hendry.fu

1
Cảm ơn, tôi đã tìm được cách ghi đè, tôi chỉ có thể sử dụng chỉ thị
ProxyErrorOverride

@satyavirya Bắt tốt, tôi sẽ thêm câu trả lời cho người tìm kiếm trong tương lai.
Shane Madden

cảm ơn về gợi ý cho ProxyErrorOverride, nhưng tôi thấy rằng có một lỗi khi sử dụng Apache 2.4 trước 2.4.11 đã được sửa: bz.apache.org/ormszilla/show_orms.cgi?id=53420 ... có lẽ là duy nhất cách giải quyết sẽ là giảm thời gian ủy nhiệm?!
FibreFoX

ProxyPass /errors !thực sự đã giúp tôi ra ngoài
NullIsNot0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.