Apache Httpd कस्टम ErrorDocument 404 जब ProxyPass 404 लौटा


9

मेरे पास एक अन्य एप्लिकेशन सर्वर के सामने एक अपाचे वेब सर्वर है, जिसमें प्रॉक्सी पास का उपयोग किया गया है। जब आवेदन में त्रुटि 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 अच्छा पकड़, मैं भविष्य के खोजकर्ताओं के जवाब में जोड़ दूँगा।
शेन मैडेन

ProxyErrorOverride को संकेत के लिए धन्यवाद, लेकिन मैंने पाया कि 2.4.11 से पहले Apache 2.4 का उपयोग करते समय एक बग है जो पहले से तय होना चाहिए: bz.apache.org/bugzilla/show_bug.cgi.id=53420 ... शायद एकमात्र समस्या को कम करने के लिए होगा proxytimeout ?!
FibreFoX 10

ProxyPass /errors !वास्तव में मेरी मदद की!
NullIsNot0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.