2013-05-17 21 views
5

मेरे पास एक रेल ऐप nginx 1.2.0 और यात्री 3.0.7 पर चल रहा है। मैं ऐप के भीतर उपयुक्त http त्रुटि होने पर रेल ऐप में कस्टम त्रुटि पृष्ठ (उदा। /rail_app/public/500.html) प्रदर्शित करना चाहता हूं।nginx + रेलवे पर रेल ऐप कस्टम त्रुटि पेज नहीं दिखा रहा है

http { 
    passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7; 
    passenger_ruby /usr/bin/ruby; 

    include  mime.types; 
    default_type application/octet-stream; 

    #access_log /opt/nginx/logs/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    server { 
     listen 80; 
     server_name localhost; 
     root /var/www/dashboard/current/public; 
     passenger_enabled on; 
     passenger_min_instances 1; 
#  listen 443; 
#  ssl on; 
#  ssl_certificate /opt/nginx/conf/server.crt; 
#  ssl_certificate_key /opt/nginx/conf/server.key; 
     error_page 500 502 503 504 /500.html; 
     location = /500.html { 
      root /var/www/dashboard/current/public/; 
     } 
    } 
} 

यह विन्यास नहीं दिखाती है रेल एप्लिकेशन ग्राहक त्रुटि पृष्ठ नहीं बल्कि सिर्फ ग्राहक के लिए http त्रुटि स्थिति कोड भेजता है:

यहाँ मेरे वर्तमान nginx कॉन्फ़िग फ़ाइल है।

कोई भी जानता है कि nginx/यात्री रेल त्रुटि ऐप कस्टम त्रुटि पृष्ठ को HTTP त्रुटि स्थिति कोड के साथ क्लाइंट में भेजता है?

उत्तर

0

config मैं का उपयोग करें:

error_page 500 502 503 504 /50x.html; 

location = /50x.html { 
    root html; 
} 
+0

बेंजामिन, धन्यवाद के लिए इस निर्देश के लिए passenger docs देखना उत्तर के लिए मैंने कोशिश की और यह काम नहीं किया। यहां जो कुछ मैं पूरा करने की कोशिश कर रहा हूं उसके बारे में यहां कुछ और विवरण दिया गया है: जब डेटाबेस डाउन हो जाता है ... मैं चाहता हूं कि रेल ऐप क्लाइंट के माध्यम से केवल http 500 भेजने के बजाय कस्टम 500 त्रुटि पृष्ठ प्रदर्शित करे। शायद मुझे activerecord अपवाद पकड़ना चाहिए? बस सुनिश्चित नहीं है कि कैसे। – Rafael

+0

प्रोड लॉग में त्रुटि: '/! \ FAILSAFE /! \ शुक्र जून 14 10:29:18 -0400 2013 स्थिति: 500 आंतरिक सर्वर त्रुटि '16 9.254.1.51' (113) पर MySQL सर्वर से कनेक्ट नहीं हो सकता /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.17/lib/active_record/connection_adapters/mysql_adapter.rb:620:in 'real_connect'' – Rafael

1

निम्नलिखित का प्रयास करें:

# We use the x just because it is for all 5xx errors. 
error_page 500 502 503 504 /5xx.html; 
location = /5xx.html { 
    alias /var/www/dashboard/current/public/; 
} 

root निर्देश को फिर से कॉन्फ़िगर, कोई मतलब नहीं है के रूप में यह पहले से ही पथ इससे पहले कि आप निर्दिष्ट करने के लिए निर्धारित है। alias सुनिश्चित करता है कि विशिष्ट स्थान आंतरिक रूप से फ़ाइल सिस्टम पर किसी भिन्न स्थान से मेल खाता है। सभी आने वाले अनुरोध पैरामीटर को पास किया जाना चाहिए और यदि आपका रेल ऐप इस बिंदु पर चीजों का ख्याल रखता है तो उसे जवाब देना चाहिए। बस सुनिश्चित करें कि आपका रेल ऐप 500 स्थिति के साथ फिर से जवाब नहीं दे रहा है (मुझे नहीं पता कि तब क्या होगा)।

संबंधित लिंक

1

आप शायद अपने nginx config में passenger_intercept_errors on; भूल रहे हैं

अधिक जानकारी

संबंधित मुद्दे