उबंटू पर Nginx स्थापित करने और कॉन्फ़िगर करने की संपूर्ण गाइड [शुरुआती‑मित्र]

目次

1. परिचय

कई लोग Ubuntu पर Nginx का उपयोग करना चाहते हैं, लेकिन यदि आप इसमें नए हैं, तो आपको नहीं पता हो सकता कि कहाँ से शुरू करें। यह लेख शुरुआती लोगों के लिए चरण-दर-चरण मार्गदर्शिका प्रदान करता है, जिसमें Ubuntu वातावरण में इंस्टॉलेशन, कॉन्फ़िगरेशन से लेकर प्रबंधन तक सब कुछ शामिल है।

Nginx क्या है?

Nginx (उच्चारण “इंजन-एक्स”) एक उच्च-प्रदर्शन HTTP सर्वर और रिवर्स प्रॉक्सी सर्वर है। यह अपनी हल्की डिज़ाइन और लचीलापन के कारण विश्वभर में व्यापक रूप से उपयोग किया जाता है, विशेष रूप से उच्च ट्रैफ़िक लोड को संभालने की क्षमता के कारण।

Ubuntu पर Nginx उपयोग करने के लाभ

Ubuntu एक लोकप्रिय Linux वितरण है जो Nginx के साथ अच्छी तरह काम करता है। इसके पैकेज प्रबंधन प्रणाली (APT) के साथ, Nginx को स्थापित और अपडेट करना आसान है, और यह उत्कृष्ट स्थिरता और सुरक्षा प्रदान करता है।

इस लेख को पढ़कर आप सीखेंगे:

  • Ubuntu पर Nginx कैसे स्थापित करें
  • बुनियादी कॉन्फ़िगरेशन और प्रबंधन प्रक्रियाएँ
  • प्रदर्शन ट्यूनिंग और समस्या निवारण

अब, चलिए शुरू करते हैं।

侍エンジニア塾

2. Ubuntu पर Nginx कैसे स्थापित करें

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

आवश्यक पैकेजों की जाँच

इंस्टॉलेशन शुरू करने से पहले, निम्नलिखित कमांड चलाकर सुनिश्चित करें कि आपका सिस्टम अद्यतित है:

sudo apt update
sudo apt upgrade

Nginx स्थापित करना

Nginx स्थापित करने के लिए, निम्नलिखित कमांड दर्ज करें:

sudo apt install nginx

यह कमांड Ubuntu के APT रिपॉजिटरी से स्वचालित रूप से Nginx को डाउनलोड और स्थापित करता है।

इंस्टॉलेशन की पुष्टि

इंस्टॉलेशन सफल हुआ या नहीं, यह जांचने के लिए, Nginx की स्थिति जांचने हेतु निम्नलिखित कमांड का उपयोग करें:

sudo systemctl status nginx

यदि आउटपुट में “active (running)” दिखता है, तो इंस्टॉलेशन सफल रहा।

फ़ायरवॉल कॉन्फ़िगर करना

Ubuntu में UFW (Uncomplicated Firewall) शामिल है, जिसका उपयोग आप Nginx ट्रैफ़िक की अनुमति देने के लिए कर सकते हैं।

sudo ufw allow 'Nginx Full'
sudo ufw enable

अब, Nginx पोर्ट 80 (HTTP) और 443 (HTTPS) पर काम करने के लिए सेट हो गया है।

3. Ubuntu पर Nginx की बुनियादी कॉन्फ़िगरेशन

सिर्फ Nginx स्थापित करना पर्याप्त नहीं है। अगला, प्रभावी उपयोग के लिए इसे सही तरीके से कॉन्फ़िगर करना आवश्यक है।

कॉन्फ़िगरेशन फ़ाइलें और बुनियादी संरचना

मुख्य Nginx कॉन्फ़िगरेशन फ़ाइलें यहाँ स्थित हैं:

  • मुख्य कॉन्फ़िगरेशन फ़ाइल: /etc/nginx/nginx.conf
  • साइट-विशिष्ट कॉन्फ़िगरेशन फ़ाइलें: /etc/nginx/sites-available/ निर्देशिका के भीतर

आमतौर पर, आप sites-available में एक वर्चुअल होस्ट कॉन्फ़िगरेशन फ़ाइल बनाते हैं और सक्रियता के लिए sites-enabled में एक सिम्बॉलिक लिंक बनाते हैं।

वर्चुअल होस्ट सेटअप करना

वर्चुअल होस्ट आपको एक ही सर्वर पर कई डोमेनों या प्रोजेक्ट्स को प्रबंधित करने की अनुमति देते हैं। निम्नलिखित उदाहरण example.com को सेटअप करता है:

sudo nano /etc/nginx/sites-available/example.com

निम्नलिखित सामग्री दर्ज करें:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

फ़ाइल को सहेजें और निम्नलिखित कमांड्स के साथ कॉन्फ़िगरेशन को सक्रिय करें:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

SSL/TLS कॉन्फ़िगर करना

सुरक्षित संचार को सक्षम करने के लिए, एक SSL/TLS प्रमाणपत्र सेटअप करें। आप मुफ्त प्रमाणपत्र प्राप्त करने के लिए Let’s Encrypt का उपयोग कर सकते हैं।

पहले, certbot स्थापित करें:

sudo apt install certbot python3-certbot-nginx

अगला, SSL प्रमाणपत्र प्राप्त करने और स्वचालित रूप से कॉन्फ़िगर करने के लिए निम्नलिखित कमांड चलाएँ:

sudo certbot --nginx -d example.com -d www.example.com

समाप्ति से बचने के लिए, स्वचालित प्रमाणपत्र नवीनीकरण भी सेट करें।

4. Nginx का प्रबंधन और नियंत्रण

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

बुनियादी Nginx कमांड

Ubuntu पर, आप systemctl कमांड का उपयोग करके Nginx को प्रबंधित कर सकते हैं। यहाँ मुख्य ऑपरेशन्स हैं:

  1. Nginx शुरू करें
sudo systemctl start nginx
  1. Nginx रोकें
sudo systemctl stop nginx
  1. Nginx पुनः आरंभ करें प्रमुख कॉन्फ़िगरेशन परिवर्तन करने पर आवश्यक।
sudo systemctl restart nginx
  1. Nginx पुनः लोड करें बिना पुनः आरंभ किए कॉन्फ़िगरेशन परिवर्तन लागू करें।
sudo systemctl reload nginx
  1. Nginx स्थिति जांचें सत्यापित करें कि Nginx सही ढंग से चल रहा है या नहीं।
sudo systemctl status nginx

स्वचालित स्टार्टअप सक्षम करना

सिस्टम रीबूट के बाद Nginx स्वचालित रूप से शुरू हो, यह सुनिश्चित करने के लिए:

  1. ऑटो-स्टार्ट सक्षम करें
sudo systemctl enable nginx
  1. ऑटो-स्टार्ट अक्षम करें (यदि आवश्यक हो)
sudo systemctl disable nginx

समस्या निवारण के लिए लॉग जांचना

यदि Nginx अपेक्षित रूप से काम नहीं कर रहा है, तो कारण पता करने के लिए लॉग जांचें।

  1. त्रुटि लॉग देखें
sudo tail -f /var/log/nginx/error.log
  1. एक्सेस लॉग देखें
sudo tail -f /var/log/nginx/access.log

5. Nginx फ़ायरवॉल कॉन्फ़िगर करना और सुरक्षा बढ़ाना

Nginx चलाते समय सुरक्षा अत्यंत महत्वपूर्ण है। यह अनुभाग Ubuntu के फ़ायरवॉल (UFW) का उपयोग करके पोर्ट कॉन्फ़िगर करने और Nginx सुरक्षा को मजबूत करने के बारे में बताता है।

UFW का उपयोग करके पोर्ट खोलना

UFW (Uncomplicated Firewall) Ubuntu में डिफ़ॉल्ट रूप से शामिल एक फ़ायरवॉल टूल है। Nginx सही ढंग से काम करने के लिए आपको पोर्ट 80 (HTTP) और 443 (HTTPS) खोलने की आवश्यकता है।

  1. वर्तमान UFW स्थिति जांचें
sudo ufw status
  1. Nginx ट्रैफ़िक की अनुमति दें आवश्यक पोर्ट खोलने के लिए निम्न कमांड चलाएँ:
sudo ufw allow 'Nginx Full'
  1. UFW सक्षम करें यदि फ़ायरवॉल अक्षम है, तो इसे सक्षम करें:
sudo ufw enable

अतिरिक्त सुरक्षा सुधार

  1. अनावश्यक HTTP मेथड्स अक्षम करें सुरक्षा बढ़ाने के लिए, Nginx कॉन्फ़िगरेशन फ़ाइल में निम्न जोड़कर अनावश्यक HTTP मेथड्स अक्षम करें:
if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 444;
}
  1. डायरेक्टरी लिस्टिंग अक्षम करें डायरेक्टरी की सामग्री को सार्वजनिक रूप से उपलब्ध होने से रोकने के लिए जोड़ें:
autoindex off;
  1. SSL/TLS को मजबूत करें अपने SSL कॉन्फ़िगरेशन में मजबूत एन्क्रिप्शन सेटिंग्स का उपयोग करें:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;

6. Nginx प्रदर्शन ट्यूनिंग और समस्या निवारण

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

प्रदर्शन ट्यूनिंग

1. वर्कर प्रोसेस कॉन्फ़िगर करना

Nginx एक मल्टी-प्रोसेस आर्किटेक्चर का पालन करता है। उपयुक्त संख्या में वर्कर प्रोसेस सेट करने से प्रदर्शन अनुकूलित होता है।

कॉन्फ़िगरेशन फ़ाइल /etc/nginx/nginx.conf को संपादित करें और सेट करें:

worker_processes auto;

“auto” सेटिंग CPU कोर के आधार पर वर्कर प्रोसेस की संख्या को स्वचालित रूप से समायोजित करती है।

2. वर्कर कनेक्शन बढ़ाएँ

डिफ़ॉल्ट रूप से, प्रत्येक वर्कर प्रोसेस की कनेक्शन संख्या सीमित होती है। इस मान को बढ़ाने से उच्च ट्रैफ़िक लोड को संभालने में सुधार होता है।

कॉन्फ़िगरेशन फ़ाइल में निम्न पंक्ति जोड़ें या संशोधित करें:

worker_connections 1024;

3. HTTP/2 सक्षम करें

HTTP/2 को सक्षम करने से संचार दक्षता में सुधार होता है और वेबसाइट लोडिंग तेज़ होती है।

/etc/nginx/sites-available/example.com फ़ाइल को संशोधित करें और listen निर्देश को इस प्रकार बदलें:

listen 443 ssl http2;

फिर Nginx को पुनः लोड करें:

sudo systemctl reload nginx

4. कंटेंट संपीड़न सक्षम करें

फ़ाइलों को भेजने से पहले संपीड़ित करने से बैंडविड्थ उपयोग कम होता है और लोडिंग समय में सुधार होता है।

निम्न सेटिंग्स जोड़ें या सक्षम करें:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

5. कैशिंग कॉन्फ़िगर करें

कैशिंग सेट करने से स्थिर संसाधनों के लिए दोहराए गए अनुरोध कम होते हैं।

निम्न कॉन्फ़िगरेशन जोड़ें:

location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 30d;
    access_log off;
}

सामान्य समस्या निवारण

1. उच्च लोड पर धीमी अनुरोध प्रोसेसिंग

  • कारण: अपर्याप्त कार्यकर्ता प्रक्रियाएँ या कनेक्शन सीमाएँ.
  • समाधान: कार्यकर्ता प्रक्रियाओं और कनेक्शनों को समायोजित करें, या लोड बैलेंसर उपयोग करने पर विचार करें.

2. “403 Forbidden” त्रुटि

  • कारण: कॉन्फ़िगरेशन फ़ाइल में root निर्देश गलत है या फ़ाइल अनुमतियाँ गलत हैं.
  • समाधान: root निर्देश की जाँच करें और फ़ाइल अनुमतियों को अपडेट करें:
sudo chmod -R 755 /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com/html

3. सर्वर टाइमआउट समस्याएँ

  • कारण: लंबा अनुरोध प्रसंस्करण समय.
  • समाधान: टाइमआउट सेटिंग्स को समायोजित करें:
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;

4. Nginx पुनः प्रारंभ त्रुटियाँ

  • कारण: कॉन्फ़िगरेशन फ़ाइल त्रुटियाँ.
  • समाधान: पुनः प्रारंभ करने से पहले कॉन्फ़िगरेशन का परीक्षण करें:
sudo nginx -t

7. सारांश और अगले कदम

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

मुख्य बिंदुओं का सारांश

1. Ubuntu पर Nginx स्थापित करना

  • आवश्यक पैकेज तैयार किए और APT का उपयोग करके Nginx स्थापित किया.
  • फ़ायरवॉल को कॉन्फ़िगर किया ताकि Nginx ट्रैफ़िक की अनुमति हो.

2. बुनियादी कॉन्फ़िगरेशन

  • Nginx की कॉन्फ़िगरेशन फ़ाइल संरचना को समझा और वर्चुअल होस्ट तथा SSL/TLS सेट किया.

3. Nginx का प्रबंधन

  • Nginx को शुरू करने, रोकने और रीफ़्रेश करने के आवश्यक कमांड सीखे.
  • समस्या निवारण के लिए लॉग्स की जाँच की.

4. सुरक्षा सुधार

  • UFW को कॉन्फ़िगर किया और अतिरिक्त सुरक्षा सेटिंग्स लागू कीं.

5. प्रदर्शन ट्यूनिंग और समस्या निवारण

  • कार्यकर्ता प्रक्रियाओं को अनुकूलित किया, HTTP/2 सक्षम किया, और कैशिंग सेट की.
  • सामान्य Nginx समस्याओं को संबोधित किया.

अगले कदम

अब जब आपके पास Ubuntu पर Nginx की मूल बातें हैं, तो इन अगले कदमों पर विचार करें:

  • लोड बैलेंसिंग और रिवर्स प्रॉक्सी जैसी उन्नत कॉन्फ़िगरेशन सीखें.
  • WAF और अतिरिक्त Nginx सुरक्षा मॉड्यूल के साथ सुरक्षा को बढ़ाएँ.
  • Ansible या Docker का उपयोग करके डिप्लॉयमेंट को स्वचालित करें.
  • Prometheus और Grafana जैसे टूल्स के साथ प्रदर्शन की निगरानी करें.

इन अवधारणाओं को लागू करके, आप Ubuntu पर Nginx के साथ एक उच्च-प्रदर्शन वेब सर्वर को प्रभावी ढंग से चला और प्रबंधित कर सकते हैं।

侍エンジニア塾