Nginx

2013-04-23 17 views
6

में POST अनुरोध के लिए 503 लौटें मेरे पास सरल कॉन्फ़िगरेशन फ़ाइल है जिसका उपयोग रखरखाव के समय कस्टम 503 त्रुटि पृष्ठ सर्वर पर किया जाता है। प्रासंगिक हिस्सा यह है:Nginx

server { 
    listen  80 default; 
    root  /usr/share/nginx/html; 
    server_name example.com; 

    location/{ 
     if (-f $document_root/503.json) { 
      return 503; 
     } 
    } 

    # error 503 redirect to 503.json 
    error_page 503 @maintenance; 
    location @maintenance { 
     rewrite ^(.*)$ /503.json break; 
    } 
} 

समस्या Nginx का पता लगा लेता है कि किसी भी अनुरोध स्थिर फ़ाइल और किसी भी पोस्ट में हल करता है, रख दिया और DELETE अनुरोध 405 (विधि की अनुमति नहीं) प्रतिक्रिया मिल।

तो सवाल यह है कि: मैं किसी भी HTTP विधि के लिए अपने पृष्ठ की सेवा करने के लिए Nginx कैसे कहूं?

+1

क्या आप इसके समाधान के साथ आए थे? –

उत्तर

3

मैं आज में फंस गयी। ऐसा लगता है कि यह मुद्दा nginx (अधिकांश सर्वरों की तरह) के कारण है जो आपको POST को स्थिर फ़ाइल में नहीं दे रहा है।

समाधान आपके @ 503 स्थान ब्लॉक में 405 त्रुटियों को कैप्चर करना है, रखरखाव पृष्ठ परोसना। इसके अलावा, आप के बाद से आप पहली बार कर रहे हैं, जानबूझकर @ recursiveerrorpages सक्षम करना होगा @, एक 503 त्रुटि फेंक, और फिर उपयोगकर्ता अपने स्थिर फ़ाइल पर पोस्ट करते हुए 405 फेंक जाता है:

recursive_error_pages on; 

if (-f $document_root/system/maintenance.html) { 
    return 503; 
} 

error_page 404 /404.html; 
error_page 500 502 504 /500.html; 
error_page 503 @503; 
location @503 { 

    error_page 405 = /system/maintenance.html; 

    # Serve static assets if found. 
    if (-f $request_filename) { 
    break; 
    } 

    rewrite ^(.*)$ /system/maintenance.html break; 
} 

स्रोत: https://www.onehub.com/blog/2009/03/06/rails-maintenance-pages-done-right/

+0

इस मामले में पोस्ट अनुरोध पर लौटाया गया स्टेटस कोड अभी भी इस मामले में 405 होगा, सही है? –

+0

@ मोहम्मद हैफेज़ नाप, इसे 503 वापस करना चाहिए। यह लिंक किए गए स्रोत आलेख में पूरी तरह से समझाया गया है, लेकिन स्मृति से यह रखरखाव पृष्ठ पर रीडायरेक्ट कर रहा है और फिर स्पष्ट रूप से 503 फेंक रहा है – Jay

0

हो सकता है कि वास्तविक यूआरआई होने के लिए 405 अनुरोधों के लिए मजबूर करने की कोशिश:

error_page 405 = $uri; 
+0

सुनिश्चित नहीं है कि आपका क्या मतलब है। 405 में वास्तविक यूआरआई परिणाम। मुझे 503 चाहिए। – cababunga

+0

यह देखें अगर यह त्रुटि_पृष्ठ 405 = 503/50x.html काम करता है; –