निगनेक्स के लिए टाइमआउट कैसे निष्क्रिय करें?


47

एक स्थानीय विकास मशीन पर, मेरे पास एक nginx रिवर्स प्रॉक्सी है जैसे:

server {
  listen 80;
  server_name myvirtualhost1.local;
  location / {
    proxy_pass http://127.0.0.1:8080;
}

server {
  listen 80;
  server_name myvirtualhost2.local;
  location / {
    proxy_pass http://127.0.0.1:9090;
}

फिर भी अगर मैं अपने आवेदन को डिबग करता हूं, तो प्रतिक्रिया में अनंत समय के लिए देरी हो सकती है, फिर भी 30 सेकंड के बाद मुझे मिलता है:

504 Gateway Time-out

प्रतिक्रिया के रूप में।

मैं टाइमआउट को कैसे अक्षम कर सकता हूं और मेरे रिवर्स प्रॉक्सी का हमेशा के लिए प्रतिसाद की प्रतीक्षा है? और मुझे सेटिंग वैश्विक होना पसंद है, ताकि मुझे इसे प्रत्येक प्रॉक्सी के लिए सेट न करना पड़े।


1
पृष्ठभूमि की नौकरी शुरू करने पर विचार करें और उपयोगकर्ता को बाद में इसकी स्थिति की जांच करने दें।
माइकल हैम्पटन

जवाबों:


61

हो सकता है कि इसे पूरी तरह से निष्क्रिय करना संभव न हो, फिर भी निष्पादन समय को बढ़ाने के लिए एक संभव समाधान है। एक nginx ट्यूटोरियल साइट पर , यह लिखा गया था:

यदि आप अपने सर्वर पर सभी साइटों के लिए समय-सीमा बढ़ाना चाहते हैं, तो आप मुख्य nginx.confफाइल को संपादित कर सकते हैं :

vim /etc/nginx/nginx.conf

Http {..} अनुभाग में निम्नलिखित जोड़ें

http {
     fastcgi_read_timeout 300;
     proxy_read_timeout 300;
}

और फिर से लोड करें nginx 'config:

sudo service nginx reload

मैंने एक बड़े मूल्य का उपयोग किया है जो होने की संभावना नहीं है, अर्थात समय इकाइयों999999 का उपयोग करके , एक दिन के माध्यम से ।1d

मान लें कि मान सेट करने 0से गेटवे टाइमआउट त्रुटि तुरंत हो जाएगी।


3
प्रिय यादृच्छिक downvoter, इस अभ्यास के बारे में क्या बुरा है पर एक टिप्पणी अच्छी होगी।
k0pernikus

7
@kb। यह अजीब बात है कि मैं ओपी हूं और सिर्फ एक जवाब के रूप में सबसे अधिक उपयोगी वर्कअराउंड पोस्ट किया है, जबकि एक वास्तविक समाधान के लिए प्रतीक्षा कर रहा है ^ ^
k0pernikus

2
हाहा, मैं पूरी तरह से चूक गया कि आप ओपी थे। लेकिन आपका उत्तर सही है, आप इसे और भी स्पष्ट कर सकते हैं (मेरे जैसे भविष्य के गोगलर्स के लिए) कि इसे निष्क्रिय करने का कोई तरीका नहीं है। =)
केबी।

5
0काम नहीं करने के बारे में जानकारी के लिए धन्यवाद ! ध्यान दें कि आप पठनीय प्रत्ययों के साथ समय इकाइयों को निर्दिष्ट कर सकते हैं , इसलिए आप जैसे मूल्य का उपयोग कर सकते हैं 1d
असली नाम

3
मैंने उस और proxy_connect_timeout 600;nginx.conf फ़ाइल में दोनों को जोड़ दिया है , लेकिन टाइमआउट अभी भी 60 सेकंड पर है। कुछ और मुझे कोशिश करनी चाहिए?
andreszs

9

यदि आप AWS, और लोड बैलेंसर का उपयोग कर रहे हैं, तो आपको आइडियल टाइमआउट संपादित करना चाहिए। मुझे लगता है कि डिफ़ॉल्ट 60 सेकंड है


मैं समझता हूं कि यह मतदान क्यों किया गया था, लेकिन शायद अगर इसका उपयोग मामला समझाने के लिए जवाब अपडेट किया गया था, तो यह अधिक उपयोगी होगा। हालांकि यह ओपी का जवाब देने के लिए नहीं जाता है, यह विचार करने के लिए कुछ उपयोगी है कि क्या आप ईएलबी का उपयोग कर रहे हैं, क्योंकि एक सीमा है कि वे कितने समय तक एक कनेक्शन भी खुला रखेंगे।
'

@ दर्जन हां, यह सिर्फ विचार के लिए कुछ है
szeljic

यह वास्तव में मेरे मामले पर विशेष रूप से जाँच के लायक है जो एडब्ल्यूएस के तहत मैगेंटो के साथ काम कर रहा है। शुभ बिंदु @szeljic
vnpnlz

धन्यवाद भाई, यह मेरे लिए काम करता है क्योंकि मैं अपने EC2 उदाहरण को वितरित करने के लिए AWS लोड बैलेंसर का उपयोग करता हूं
V47 Thành Tâm

यह सभी उत्थान के योग्य है - कोई भी एडब्ल्यूएस उपयोगकर्ता अभी भी 60 सेकंड तक सीमित रहेंगे, इसके बावजूद उनकी एनजीआईएनएक्स सेटिंग्स की परवाह किए बिना
एफीयर

4

मैं nginx 502 टाइमआउट त्रुटि के साथ लड़ रहा हूँ और इस मुद्दे को हल नहीं कर सका। हालाँकि, यह टाइमआउट त्रुटि के कारण gunicorn हुआ। इसलिए आपको अपनी फास्टैगी सेटिंग्स को जांचना भी पड़ सकता है।

Gunicorn के लिए यह है:

gunicorn wsgi:application --timeout 300
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.