paint-brush
व्यावहारिक अनुभव से शीर्ष 25 Nginx युक्तियाँ और तरकीबेंद्वारा@mykolaprokopenko
8,818 रीडिंग
8,818 रीडिंग

व्यावहारिक अनुभव से शीर्ष 25 Nginx युक्तियाँ और तरकीबें

द्वारा Mykola Prokopenko11m2022/07/24
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

एनजीआईएनएक्स एक गैर-अवरुद्ध, घटना-संचालित वास्तुकला पर बनाया गया है। इसमें एक प्राथमिक प्रक्रिया, कई कार्यकर्ता_प्रक्रियाएँ और दो कैश प्रबंधन प्रक्रियाएँ हैं। Nginx आपको कनेक्शन, निष्क्रिय संसाधनों, या क्लाइंट सेवा को बाधित किए बिना सर्वर कॉन्फ़िगरेशन को अपडेट करने की अनुमति देता है। सेवा को पुनरारंभ किए बिना सेटिंग्स को लागू करना एक अच्छा अभ्यास है, अर्थात यह वर्तमान कनेक्शन को समाप्त नहीं करता है और सेवा लोड करते समय प्रतीक्षा अवधि को समाप्त करता है। इसे लागू करने से पहले लिखित विन्यास की शुद्धता की जांच करें।

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - व्यावहारिक अनुभव से शीर्ष 25 Nginx युक्तियाँ और तरकीबें
Mykola Prokopenko HackerNoon profile picture



यह लेख नौसिखिया के अनुकूल है क्योंकि डेटा सरल से जटिल तक प्रस्तुत किया गया है। DevOps इंजीनियर के रूप में अपना करियर शुरू करते समय, मेरे पास ऐसी सामग्री की कमी थी। मैं इस बारे में बात करने की कोशिश करूंगा कि Nginx कैसे काम करता है और व्यावहारिक अनुभव से कुछ टिप्स और ट्रिक्स।


एनजीआईएनएक्स कैसे काम करता है

एनजीआईएनएक्स एक गैर-अवरुद्ध, घटना-संचालित वास्तुकला पर बनाया गया है। इसमें एक प्राथमिक प्रक्रिया, कई कार्यकर्ता_प्रक्रियाएँ और दो कैश प्रबंधन प्रक्रियाएँ हैं। इसे देखने के लिए, आपको बस स्विच के साथ ps कमांड चलाने की आवश्यकता है:


 ps -ef --forest | grep nginx


प्राथमिक प्रक्रिया रूट के रूप में चलती है और ऐसे कार्य करती है जिनमें उन्नयन की आवश्यकता होती है, जैसे:

  • पढ़ने का विन्यास;

  • बंदरगाह खोलना;

  • नई प्रक्रियाओं का निर्माण।


मजदूर करते हैं सारे काम :

  • नेटवर्क कनेक्शन संभालें;
  • डिस्क पर डेटा पढ़ें और लिखें;
  • बैकएंड सर्वर के साथ संचार।


आमतौर पर, श्रमिकों की संख्या CPU कोर की संख्या के बराबर होती है। यह आपको सिस्टम संसाधनों का यथासंभव कुशलता से उपयोग करने की अनुमति देता है।


Worker_processes दो प्रकार के सॉकेट पर सुनता है:

  • श्रोता - नए क्लाइंट ईवेंट (कनेक्शन अनुरोध) के लिए;
  • कनेक्शन - उन घटनाओं के लिए जिन्हें प्रसंस्करण की आवश्यकता होती है।


कार्यकर्ता_प्रोसेस दो प्रकार के एपीआई का उपयोग करके किसी घटना की प्रतीक्षा करता है: एपोल या केक्यू । श्रोता सॉकेट पर एक नया क्लाइंट ईवेंट प्राप्त करते समय, वर्कर_प्रोसेस एक नया सॉकेट कनेक्शन बनाता है।


कनेक्शन सॉकेट पर एक ईवेंट प्राप्त करने के बाद, वर्कर_प्रोसेस इस अनुरोध को निष्पादित करता है। घटना को संसाधित करने के बाद, यह अवरुद्ध नहीं होता है, लेकिन यह स्टैंडबाय मोड में चला जाता है और इस प्रकार एक ऑपरेटिंग सिस्टम के संदर्भ स्विच की संख्या को कम करता है।


उपरोक्त आर्किटेक्चर के साथ, NGINX कॉन्फ़िगरेशन को अपडेट करना उतना ही सरल है जितना कि प्राथमिक प्रक्रिया को SIGHUP सिग्नल भेजना। NGINX पर्याप्त रूप से कॉन्फ़िगर होने के साथ, प्रत्येक कार्यकर्ता प्रक्रिया एक ही समय में सैकड़ों हजारों कनेक्शनों को संसाधित करने में सक्षम है।


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


युक्तियाँ और चालें

1. इसे लागू करने से पहले लिखित विन्यास की शुद्धता की जांच करें

कॉन्फ़िगरेशन बदलने या बनाने के बाद, आपको सिंटैक्स और कॉन्फ़िगरेशन फ़ाइल लिखने की शुद्धता की जांच करने की आवश्यकता है। Nginx आपको निम्न कमांड के साथ कॉन्फ़िगरेशन लिखने की शुद्धता की जांच करने की अनुमति देता है:


 nginx -t


2. सेवा को पुनरारंभ किए बिना Nginx को पुनः लोड करें

सेवा को पुनरारंभ किए बिना सेटिंग्स को लागू करना एक अच्छा अभ्यास है। यह वर्तमान कनेक्शन को समाप्त नहीं करता है और सेवा लोड करते समय प्रतीक्षा अवधि को समाप्त करता है, अर्थात कोई डाउनटाइम नहीं है:


 nginx -s reload


या


 /etc/init.d/nginx reload


या


 service nginx reload


3. Nginx server_tokens अक्षम करें

डिफ़ॉल्ट रूप से, Nginx में server_tokens निर्देश Nginx की संस्करण संख्या प्रदर्शित करता है। यह सभी स्वचालित रूप से उत्पन्न त्रुटि पृष्ठों पर और सर्वर हेडर में सभी HTTP प्रतिक्रियाओं में सीधे दिखाई देता है।


इससे जानकारी का खुलासा हो सकता है - एक अनधिकृत उपयोगकर्ता आपके Nginx संस्करण के बारे में पता लगा सकता है। यह मदद करेगा यदि आप सेटिंग द्वारा Nginx कॉन्फ़िग फ़ाइल में server_tokens निर्देश को अक्षम करते हैं:


 server_tokens off;


4. लीगेसी एसएसएल/टीएलएस प्रोटोकॉल अक्षम करें

 ssl_protocols TLSv1.2 TLSv1.3;


5. किसी भी अवांछित HTTP विधियों को अक्षम करें

किसी भी HTTP विधियों को अक्षम करें जिनका उपयोग नहीं किया जाएगा और जिन्हें वेब सर्वर पर लागू करने की आवश्यकता नहीं है।


यदि आप Nginx वर्चुअल होस्ट कॉन्फ़िगरेशन फ़ाइल के स्थान ब्लॉक में निम्न शर्त जोड़ते हैं, तो सर्वर केवल GET, HEAD और POST विधियों को अनुमति देगा और DELETE और TRACE जैसी विधियों को फ़िल्टर करेगा:


 location / { limit_except GET HEAD POST { deny all; } }


एक अन्य तरीका निम्न शर्त को सर्वर सेक्शन (या सर्वर ब्लॉक) में जोड़ना है। इसे अधिक सामान्य माना जा सकता है, लेकिन आपको सावधान रहना चाहिए यदि स्थान के संदर्भ में कथन :


 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; }


6. Nginx एक्सेस और एरर लॉग को सेटअप और कॉन्फ़िगर करें

Nginx पहुँच और त्रुटि लॉग डिफ़ॉल्ट रूप से सक्षम होते हैं और क्रमशः logs/ logs/error.log और logs/access.log, स्थित होते हैं।


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


उदाहरण के लिए, गंभीर गंभीरता Nginx को गंभीर मुद्दों और गंभीर मुद्दों की तुलना में उच्च गंभीरता स्तर वाले सभी मुद्दों को लॉग करने का कारण बनेगी। गंभीरता स्तर को महत्वपूर्ण पर सेट करने के लिए, error_log निर्देश निम्नानुसार सेट करें:


 error_log logs/error.log crit;


आप आधिकारिक Nginx दस्तावेज़ में error_log गंभीरता स्तरों की पूरी सूची पा सकते हैं।

एक्सेस लॉग के लिए एक गैर-मानक स्थान निर्दिष्ट करने के लिए आप Nginx कॉन्फ़िगरेशन फ़ाइल में access_log निर्देश को भी बदल सकते हैं।


अंत में, आप लॉग किए गए संदेशों के प्रारूप को अनुकूलित करने के लिए log_format निर्देश का उपयोग कर सकते हैं, जैसा कि Nginx दस्तावेज़ में वर्णित है।


7. Nginx कार्यकर्ता कनेक्शन

एक महत्वपूर्ण सेटिंग जिसे हम कॉन्फ़िगर करते हैं, वह है Nginx कॉन्फ़िगरेशन फ़ाइल /etc/nginx/nginx.conf में कार्यकर्ता प्रक्रियाओं की संख्या और कार्यकर्ता कनेक्शन की संख्या।


हम DDoS हमलों को संभालने के लिए वर्कफ़्लो और वर्कर कनेक्शन को धीरे-धीरे उच्च या निम्न मान में समायोजित करेंगे:


 events { worker_connections 20000; }


यह सेटिंग प्रत्येक कार्यकर्ता प्रक्रिया को 20,000 कनेक्शन तक संभालने की अनुमति देती है।


8. अनुरोध दर सीमा

DDoS हमलों को रोकने के लिए कई मूल्यवान युक्तियों में से एक, आने वाले ट्रैफ़िक की दर को सीमित करना सबसे सरल और सबसे प्रभावी है।


उदाहरण के लिए, आप उस दर को निर्दिष्ट कर सकते हैं जिस पर एनजीआईएनएक्स एक निर्दिष्ट अवधि के लिए विशिष्ट क्लाइंट आईपी पते से आपकी सेवा के लिए औसत दर पर आने वाले अनुरोधों को स्वीकार करता है।


हम अनुरोधों की संख्या को सीमित करने के लिए Nginx कॉन्फ़िगरेशन फ़ाइल में limit_req_zone निर्देश सेट करते हैं:


 limit_req_zone $binary_remote_addr zone=req_per_ip:1m rate=30r/m; server { location /login { limit_req zone=req_per_ip; } }


यह उदाहरण एक भंडारण क्षेत्र बनाता है जिसका नाम 16,000 (1m) अद्वितीय IP पते तक हो सकता है, और 30r/m का अर्थ है कि प्रति मिनट केवल 30 अनुरोधों की अनुमति है।


फिर हम किसी विशिष्ट स्थान या फ़ाइल से कनेक्शन की गति को सीमित करने के लिए limit_req निर्देश का उपयोग करते हैं, इस मामले में, लॉग इन करें।


9. कनेक्शन की संख्या सीमित करना

आप एकल क्लाइंट आईपी पते से खुलने वाले कनेक्शन की संख्या को सीमित कर सकते हैं, और यहां हम प्रति आईपी पते पर कनेक्शन की संख्या को सीमित करने के लिए लिमिट_कॉन_ज़ोन और limit_conn निर्देश सेट कर रहे हैं:


 limit_conn_zone $binary_remote_addr zone=conn_per_ip:1m; server { location / { limit_conn conn_per_ip 10; } }


यह उदाहरण निर्दिष्ट कुंजी के अनुरोधों को संग्रहीत करने के लिए conn_per_ip नामक एक स्टोरेज ज़ोन बनाता है, इस मामले में, क्लाइंट का आईपी पता, $binary_remote_addr। limit_conn निर्देश तब प्रत्येक क्लाइंट के आईपी पते से दस कनेक्शन सेट करता है।


10. समयबाह्य विकल्प

धीमे कनेक्शन लंबे समय तक कनेक्शन को खुला रखने के प्रयास का प्रतिनिधित्व कर सकते हैं। परिणामस्वरूप, सर्वर नए कनेक्शन स्वीकार नहीं कर सकता:


 server { client_body_timeout 5s; client_header_timeout 5s; }


इस उदाहरण में, client_body_timeout निर्देश निर्दिष्ट करता है कि Nginx क्लाइंट बॉडी प्रविष्टियों के बीच कितनी देर तक प्रतीक्षा करता है और client_header_timeout निर्दिष्ट करता है कि Nginx क्लाइंट हेडर प्रविष्टियों के बीच कितनी देर तक प्रतीक्षा करता है। दोनों 5 सेकंड के लिए सेट हैं।


11. अनुरोधों के आकार को सीमित करें

इसी तरह, बड़े बफर मान या बड़े HTTP अनुरोध आकार DDoS हमलों को आसान बनाते हैं। इसलिए, हम DDoS हमलों को कम करने के लिए Nginx कॉन्फ़िगरेशन फ़ाइल में निम्नलिखित बफर मानों को सीमित करते हैं:


 client_body_buffer_size 200K; client_header_buffer_size 2k; client_max_body_size 200k; large_client_header_buffers 3 1k;


कहाँ पे,


client_body_buffer_size 1k — (डिफ़ॉल्ट 8k या 16k) निर्देश क्लाइंट अनुरोध बॉडी बफर के आकार को निर्दिष्ट करता है;


client_header_buffer_size 1k - निर्देश क्लाइंट से अनुरोध शीर्षलेख के लिए शीर्षलेख बफर आकार सेट करता है। अधिकांश अनुरोधों के लिए 1Kb का बफर आकार पर्याप्त है।


यदि आपके पास कस्टम हेडर या क्लाइंट द्वारा भेजी गई एक विशाल कुकी है (जैसे वैप क्लाइंट) तो इस मान को बढ़ाएं;


client_max_body_size 1k - निर्देश अनुरोध शीर्षलेख में सामग्री-लंबाई रेखा द्वारा निर्दिष्ट क्लाइंट अनुरोध निकाय का अधिकतम स्वीकार्य आकार सेट करता है।


यदि आकार निर्दिष्ट आकार से बड़ा है, तो क्लाइंट को "अनुरोध इकाई बहुत बड़ी" त्रुटि (413) प्राप्त होती है। जब आप POST पद्धति का उपयोग करके फ़ाइलें अपलोड कर रहे हों तो इस मान को बढ़ाएँ;


large_client_header_buffers 2 1k - निर्देश क्लाइंट अनुरोध से बड़े हेडर पढ़ने के लिए बफर की अधिकतम संख्या और आकार निर्दिष्ट करता है।


डिफ़ॉल्ट रूप से, एक बफ़र का आकार प्लेटफ़ॉर्म के आधार पर पृष्ठ आकार के बराबर होता है, यह या तो 4K या 8K होता है।


यदि कनेक्शन कार्य अनुरोध के अंत में जीवित रहने की स्थिति में चला जाता है, तो ये बफ़र्स जारी किए जाते हैं।


उदाहरण के लिए, 2x1k 2 KB डेटा URI को स्वीकार करेगा। यह खराब बॉट्स और DoS हमलों से लड़ने में भी मदद करेगा।


12. आईपी ब्लैकलिस्ट

यदि आप हमले के लिए उपयोग किए गए क्लाइंट आईपी पते की पहचान कर सकते हैं, तो आप उन्हें अस्वीकार निर्देश के साथ ब्लैकलिस्ट कर सकते हैं ताकि एनजीआईएनएक्स और एनजीआईएनएक्स प्लस उनके कनेक्शन या अनुरोधों को स्वीकार न करें:


 location / { deny 111.111.111.4; deny 111.111.111.0/24; }


इस उदाहरण में, पहला इनकार एक विशिष्ट आईपी पते को अवरुद्ध करता है, और दूसरा इनकार आईपी पते की पूरी श्रृंखला को अवरुद्ध करता है।


13. आईपी श्वेतसूची

यदि आपकी वेबसाइट या एप्लिकेशन को केवल एक या अधिक विशिष्ट सेट या क्लाइंट IP पतों की श्रेणियों से एक्सेस करने की अनुमति है, तो आप केवल उन पतों को साइट या एप्लिकेशन तक पहुंचने की अनुमति देने के लिए अनुमति और अस्वीकार निर्देशों का एक साथ उपयोग कर सकते हैं:


 location / { allow 111.111.111.4; deny all; }


आप किसी विशिष्ट स्थानीय नेटवर्क पर केवल पतों तक पहुंच को प्रतिबंधित कर सकते हैं। यहां, सभी निर्देशों को अस्वीकार करने से सभी क्लाइंट आईपी पते ब्लॉक हो जाते हैं जो अनुमति निर्देश द्वारा निर्दिष्ट सीमा में नहीं हैं।


14. किसी फ़ाइल या स्थान तक पहुँच को ब्लॉक करें

आप किसी फ़ाइल या स्थान तक पहुँच को पूरी तरह से अवरुद्ध करने के लिए Nginx का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप देखते हैं कि register.php फ़ाइल किसी हमले का लक्ष्य है, तो आप इस फ़ाइल तक पहुँच को पूरी तरह से ब्लॉक कर सकते हैं:


 location /register { deny all; return 444; }


यह उन सभी अनुरोधों को छोड़ देगा जो इस फ़ाइल तक पहुँचने का प्रयास करते हैं। कोड 444 बिना किसी प्रतिक्रिया के कनेक्शन बंद कर देता है।


15. sysctl आधारित सुरक्षा सक्षम करें

sysctl-आधारित सुरक्षा सक्षम करें। हम अपने सर्वर पर कर्नेल और सिस्टम वेरिएबल को ट्वीक कर सकते हैं। /etc/sysctl.conf फ़ाइल को संपादित करें और इन दो पंक्तियों को 1 पर इस प्रकार सेट करें:


 net.ipv4.conf.all.rp_filter = 1 net.ipv4.tcp_syncookies = 1


पहली सेटिंग IP एड्रेस स्पूफिंग सुरक्षा को सक्षम करती है, और दूसरी सेटिंग TCP SYN कुकी सुरक्षा को सक्षम करती है।


16. लोड बैलेंसर के रूप में Nginx

जब Nginx को लोड बैलेंसर के रूप में उपयोग किया जाता है, तो प्रति सर्वर कनेक्शन की संख्या को सीमित करने के लिए सेटिंग्स को कॉन्फ़िगर किया जा सकता है:


 upstream domain { server 111.111.111.4:80 max_conns=100; server 111.111.111.5:80 max_conns=100; queue 20 timeout=10s; }


यहां, max_conns निर्देश निर्दिष्ट करता है कि Nginx सर्वर के लिए कितने कनेक्शन खोल सकता है। कतार निर्देश कतारबद्ध अनुरोधों की संख्या को सीमित करता है जब उस समूह के सभी सर्वर कनेक्शन सीमा तक पहुंच गए हों।


अंत में, टाइमआउट निर्देश निर्दिष्ट करता है कि अनुरोध को कतार में कितनी देर तक रखा जा सकता है।


17. कुछ उपयोगकर्ता एजेंटों को अस्वीकार करें

आप उपयोगकर्ता एजेंटों यानी क्रॉलर, बॉट और स्पैमर को आसानी से ब्लॉक कर सकते हैं जो आपके सर्वर का दुरुपयोग कर सकते हैं:


 ## Block download agents ## if ($http_user_agent ~* LWP::Simple|BBBike|wget) { return 403; }


 ## Block some robots ## if ($http_user_agent ~* msnbot|scrapbot|PxBroker) { return 403; }


18. रेफ़रल स्पैम को ब्लॉक करें

रेफरल स्पैम खतरनाक है। यह वेबलॉग (यदि प्रकाशित हो) के माध्यम से आपकी एसईओ रैंकिंग को नुकसान पहुंचा सकता है क्योंकि रेफरर फ़ील्ड उनकी स्पैम साइट से लिंक करता है। इन पंक्तियों के साथ, आप रेफ़रलकर्ता स्पैमर तक पहुँच को अवरोधित कर सकते हैं:


 if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) { return 403; }


19. इमेज हॉटलिंकिंग बंद करें

एक छवि हॉटलिंक या HTML का अर्थ है कि कोई व्यक्ति आपकी साइट को आपकी किसी एक छवि से लिंक करता है लेकिन इसे अपनी साइट पर प्रदर्शित करता है।


आप बैंडविड्थ के लिए भुगतान करना समाप्त कर देंगे और सामग्री को साइट के हिस्से की तरह बना देंगे। यह आमतौर पर मंचों और ब्लॉगों पर किया जाता है। मैं अत्यधिक अनुशंसा करता हूं कि आप अपने सर्वर के समान स्तर पर छवि हॉटलिंकिंग को ब्लॉक और बंद करें:


 location /images/ { valid_referers none blocked www.domain.com domain.com; if ($invalid_referer) { return 403; } }


20. फ़ायरवॉल स्तर पर प्रति आईपी पते पर कनेक्शन की संख्या सीमित करता है

वेब सर्वर को कनेक्शन की निगरानी करनी चाहिए और प्रति सेकंड कनेक्शन की संख्या सीमित करनी चाहिए। यह 101 परोसता है। pf और iptables दोनों आपके Nginx सर्वर तक पहुँचने से पहले अंतिम-उपयोगकर्ताओं को ब्लॉक कर सकते हैं।

Linux Iptables: प्रति सेकंड Nginx कनेक्शन थ्रॉटलिंग।

निम्नलिखित उदाहरण में, आने वाले कनेक्शन को छोड़ दिया जाएगा यदि आईपी 60 सेकंड के भीतर पोर्ट 80 पर 15 से अधिक कनेक्शन प्रयास करता है:


 /sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set && \ /sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 15 -j DROP && \ service iptables save


21. कुछ ब्राउज़रों में सामग्री प्रकार सूँघने को अक्षम करें

यदि कोई प्रतिक्रिया गलत सामग्री प्रकार निर्दिष्ट करती है, तो ब्राउज़र अप्रत्याशित तरीके से प्रतिक्रिया को संसाधित कर सकते हैं।


यदि सामग्री प्रकार को एक रेंडर करने योग्य टेक्स्ट-आधारित प्रारूप के रूप में निर्धारित किया जाता है, तो ब्राउज़र आमतौर पर प्रतिक्रिया की वास्तविक सामग्री की परवाह किए बिना उस प्रारूप में प्रतिक्रिया की व्याख्या करने का प्रयास करेगा।


इसके अतिरिक्त, कुछ अन्य निर्दिष्ट सामग्री प्रकारों को कभी-कभी विशेष ब्राउज़रों में विशिष्टताओं के कारण HTML के रूप में व्याख्यायित किया जा सकता है। इससे अन्यथा "सुरक्षित" सामग्री हो सकती है जैसे छवियों को HTML के रूप में प्रस्तुत किया जा रहा है, कुछ स्थितियों में क्रॉस-साइट स्क्रिप्टिंग हमलों को सक्षम करना। निम्नलिखित को अपनी कॉन्फ़िगरेशन में जोड़ें:


add_header X-Content-Type-Options nosniff;


22. क्रॉस-साइट स्क्रिप्टिंग (XSS) फ़िल्टर सक्षम करें

अपने Nginx वेब सर्वर पर X-XSS-Protection शीर्षलेख को सक्षम करने के लिए अपनी कॉन्फ़िगरेशन फ़ाइल में निम्न पंक्ति जोड़ें। जब आप कर लें, तो अपने परिवर्तन सहेजें और Nginx को पुनः लोड करें:


add_header X-XSS-Protection "1; mode=block";


23. HTTP / 2 समर्थन कॉन्फ़िगर करें

HTTP / 2 HTTP 1.x नेटवर्क प्रोटोकॉल का उत्तराधिकारी है। HTTP / 2 का व्यापक रूप से विलंबता को कम करने, प्रोटोकॉल ओवरहेड को कम करने, अनुरोध प्राथमिकता के लिए समर्थन जोड़ने और वेब एप्लिकेशन लोडिंग को गति देने के लिए उपयोग किया जाता है।


इसलिए, प्रदर्शन अनुकूलन तकनीकों और रणनीतियों के साथ अद्यतित रहना महत्वपूर्ण है। HTTP / 2 का मुख्य फोकस वेब पेज के समग्र लोड समय को कम करना है, जो प्रदर्शन को अनुकूलित करता है।


यह नेटवर्क और सर्वर संसाधनों के उपयोग के साथ-साथ बढ़ी हुई सुरक्षा पर भी ध्यान केंद्रित करता है, क्योंकि HTTP / 2 का उपयोग करते समय एसएसएल / टीएलएस एन्क्रिप्शन अनिवार्य है।


एक शर्त के रूप में, सुनिश्चित करें कि Nginx संस्करण 1.9.5 या उच्चतर है जैसा कि इसे बनाया गया है, अन्यथा, आपको इसे मैन्युअल रूप से जोड़ना होगा, और सर्वर को SSL/TLS को सक्षम करना होगा। आपका HTTPS सर्वर ब्लॉक अब इस तरह दिखना चाहिए:


 server { listen 443 ssl http2; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; }


24. सामग्री-सुरक्षा-नीति (सीएसपी) जोड़ें

CSP सुरक्षा की एक अतिरिक्त परत है जो क्रॉस-साइट स्क्रिप्टिंग (XSS) और डेटा इंजेक्शन हमलों सहित कुछ प्रकार के हमलों का पता लगाने और उन्हें कम करने में मदद करती है। इन हमलों का उपयोग डेटा चोरी, वेबसाइट भ्रष्टाचार और मैलवेयर वितरण के लिए किया जाता है:


 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;


25. निगरानी Nginx

आपके सर्वर की स्थिति की लगातार निगरानी की जानी चाहिए। आप देख सकते हैं कि सर्वर समय-समय पर अनुरोध भेजकर क्या लौटाता है, उदाहरण के लिए, तृतीय-पक्ष भुगतान सेवाओं के माध्यम से। या आप सब कुछ ठीक कर सकते हैं, और इसे करने के कई तरीके हैं— Nginx ब्लॉग में इसके बारे में अधिक जानकारी।


इसके बजाय निष्कर्ष

लचीला होना और प्रत्येक मामले के लिए अलग से एक विन्यास विकसित करना आवश्यक है।