सवाल डाउनटाइम के बिना Nginx कॉन्फ़िगर पुनः लोड करें


मैं nginx का उपयोग एक रिवर्स प्रॉक्सी के रूप में करता हूं। जब भी मैं इसका उपयोग कर कॉन्फ़िगरेशन को अद्यतन करता हूं

sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP `cat /var/run/nginx.pid`"

मुझे एक संक्षिप्त डाउनटाइम का सामना करना पड़ता है। मैं इससे कैसे बच सकता हूं?


93
2018-04-11 17:13


मूल


क्या वे कमांड लाइन कमांड के लिए हैं? मैंने किसी को भी इस तरह के उद्धरणों में एक संपूर्ण सुडो कमांड को लपेट नहीं देखा है, यह आवश्यक नहीं हो सकता है। - brianmearns
बस एक सामान्य टिप्पणी: मुझे लगता है कि मानक / अनुशंसित अभ्यास आपकी साइट कॉन्फ़िगरेशन के लिए एक नरम / प्रतीकात्मक लिंक बना रहा है sites-enabled, इसे कॉपी नहीं करें। आपके विशेष मुद्दे से संबंधित नहीं है, लेकिन आप इसे देखना चाहेंगे। - brianmearns
आपको डाउनटाइम का सामना नहीं करना चाहिए। kill HUP nginx में एक सुंदर रीलोड करने का तरीका है। - Jonathan Vanasco


जवाब:


रन service nginx reload या /etc/init.d/nginx reload

यह डाउनटाइम के बिना कॉन्फ़िगरेशन का गर्म पुनः लोड करेगा। यदि आपके पास लंबित अनुरोध हैं, तो वहां निंगक्स प्रक्रियाएं होंगी जो उन कनेक्शनों को मरने से पहले संभाल लेंगी, इसलिए यह कॉन्फ़िगर को पुनः लोड करने का एक बेहद शानदार तरीका है।

कभी-कभी आप साथ प्रीपेड करना चाह सकते हैं sudo 


153
2018-04-11 17:24



उन दोनों को वास्तव में यह करना चाहिए कि प्रश्न क्या कहता है: भेजें SIGHUP nginx मास्टर प्रक्रिया के लिए। कोई अंतर नहीं होना चाहिए। nginx.org/en/docs/control.html - Gnarfoz
जब मैं CentOS पर कमांड जारी करता हूं तो यह कहता है "उपयोग /etc/init.d/nginx (start..stop ... पुनरारंभ करें .. पुनः लोड करें)" .. और यह ठीक है कि मैंने इसका उपयोग कैसे किया। फ़ाइल /init.d/nginx में मुझे मार-एचयूपी मिला cat $PIDFILE || echo -n "पुनः लोड नहीं किया जा सकता" - mashup
क्या आप जानते हैं कि अंतर क्या है service nginx reloadतथा nginx -s reload? यदि मैं पूर्व चलाता हूं, तो मुझे यह आउटपुट मिलता है: Reloading nginx configuration: nginx., लेकिन मेरे परिवर्तन अपडेट नहीं हैं। यदि मैं उत्तरार्द्ध चलाता हूं, तो मुझे कोई आउटपुट नहीं मिलता है, लेकिन मेरे परिवर्तन प्रतिबिंबित होते हैं। - Ryan Quinn
मैंने बस जोड़ने के बाद यह कोशिश की log_not_found निर्देश लेकिन पाया कि मुझे इसे काम करने के लिए वास्तव में पुनरारंभ करना पड़ा था। मुझे लगता है कि पुनः लोडिंग सभी निर्देशों के लिए काम नहीं करती है? - mydoghasworms


रन /usr/sbin/nginx -s reload

देख http://wiki.nginx.org/CommandLine अधिक कमांड लाइन विकल्पों के लिए।


55
2017-07-27 13:46



अंत में, एक आदेश जो डेबियन जेसी में काम करता है। - danger89
यह एक बेहतर तरीका है। क्योंकि आपका सर्वर नहीं करता है नीचे अगर आपकी कॉन्फ़िगरेशन में त्रुटियां हैं (केवल इस मामले में त्रुटियां दिखाती हैं)। - Mir-Ismaili


नहीं, आप गलत हैं, आपको बताए गए प्रक्रिया के साथ किसी भी डाउनटाइम का सामना नहीं करना चाहिए। (Nginx बिना किसी डाउनटाइम के फ्लाई पर कॉन्फ़िगरेशन रीलोड कर सकता है, लेकिन फ्लाई पर निष्पादन योग्य के अपग्रेड भी, बिना किसी डाउनटाइम के।)

के अनुसार http://nginx.org/docs/control.html#reconfigurationभेजना HUP nginx को सिग्नल सुनिश्चित करता है कि यह एक सुंदर पुनरारंभ करता है, और, अगर कॉन्फ़िगरेशन फ़ाइलें गलत हैं, तो पूरी प्रक्रिया को त्याग दिया जाता है, और आपको nginx के साथ छोड़कर पहले भेज दिया जाता है HUP संकेत। किसी भी समय किसी भी डाउनटाइम संभव नहीं होना चाहिए।

कॉन्फ़िगरेशन फ़ाइल को फिर से पढ़ने के लिए nginx के लिए, एक HUP सिग्नल मास्टर प्रक्रिया में भेजा जाना चाहिए। मास्टर प्रक्रिया पहले सिंटैक्स वैधता की जांच करती है, फिर लॉग कॉन्फ़िगरेशन और नए श्रवण सॉकेट खोलने के लिए नई कॉन्फ़िगरेशन लागू करने का प्रयास करती है। यदि यह विफल हो जाता है, तो यह बदलावों को वापस ले जाता है और पुराने कॉन्फ़िगरेशन के साथ काम करता रहता है।


8
2018-06-22 16:58





आमतौर पर, किसी सेवा की कॉन्फ़िगरेशन फ़ाइल को पुनः लोड करने से चलने वाली सेवा को प्रभावित नहीं होना चाहिए। हालांकि, यह इस पर निर्भर करता है कि कैसे SIGHUP संकेत संसाधित किया जाता है।

यदि एक विशिष्ट सेवा रीलोड के दौरान डाउनटाइम का अनुभव कर रही है, तो लोड लोडर का उपयोग करके अधिमानतः एकाधिक सर्वरों पर एक ही सेवा चलाकर इसे घुमाया जा सकता है। इस मामले में, आप एक समय में एक सर्वर ले सकते हैं और पुनः लोड / पुनरारंभ कर सकते हैं। फिर, यह पुष्टि करने के बाद इसे फिर से जोड़ा जा सकता है कि यह ठीक है।


2
2018-04-11 17:24



हालांकि यह सीधे सवाल का जवाब नहीं देता है, यह निश्चित रूप से एक सर्वोत्तम अभ्यास परिदृश्य है कि ओपी सामान्य रूप से डाउनटाइम से बचने के लिए पालन करने के लिए स्मार्ट होगा। - Andrew M.
Nginx कैसे विभिन्न संकेतों को संभालने पर विवरण: nginx.org/en/docs/control.html - Gnarfoz