目次
1. परिचय
Ubuntu मा Nginx प्रयोग गर्न चाहनेहरू धेरै छन्, तर पहिलो पटक प्रयोग गर्नेहरूले कहाँबाट सुरु गर्ने भन्ने थाहा नहुन सक्छ। यो लेखमा, शुरुआतीहरूका लागि पनि बुझ्न सजिलो हुने गरी, Ubuntu वातावरणमा Nginx को स्थापना देखि सेटिङ, व्यवस्थापन विधिसम्म क्रमशः व्याख्या गरिएको छ।Nginx भनेको के हो?
Nginx (इन्जिन एक्स) उच्च प्रदर्शनको HTTP सर्भर तथा रिभर्स प्रोक्सी सर्भरको रूपमा चिनिन्छ। यसको हल्कापन र लचकताको कारणले, विश्वभरका वेब सर्भरहरू र एप्लिकेसनहरूमा प्रयोग गरिन्छ। विशेष गरी, उच्च ट्राफिक सहन सक्ने संरचना यसको विशेषता हो।Ubuntu मा Nginx प्रयोग गर्ने फाइदाहरू
Ubuntu लोकप्रिय लिनक्स डिस्ट्रीब्युसन हो, र Nginx सँग यसको अनुकूलता पनि राम्रो छ। प्याकेज व्यवस्थापन प्रणाली (APT) प्रयोग गर्न सकिने भएकाले, स्थापना र अपडेट सजिलो हुन्छ, र स्थिरता तथा सुरक्षाको अपेक्षा गर्न सकिन्छ। यो लेख पढेर, तलका सामग्रीहरू बुझ्न सकिन्छ:- Ubuntu मा Nginx स्थापना विधि
- आधारभूत सेटिङ र व्यवस्थापन प्रक्रिया
- प्रदर्शन ट्युनिङ र समस्या निवारण
२. 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 लाई ८० नम्बर पोर्ट (HTTP) र ४४३ नम्बर पोर्ट (HTTPS) मा चलाउन तयार पार्छ।
३. युभुन्टुमा Nginx को आधारभूत सेटिङ
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
प्रमाणपत्रको म्याद सकिन नदिन, स्वचालित अपडेट सेटिङ पनि गरौं।४. Nginx को सुरुवात र व्यवस्थापन विधि
Nginx स्थापना गरेपछि र आधारभूत सेटिङ गरेपछि, सुरुवात, रोकावट, सेटिङ परिवर्तनको समयमा पुनः लोड जस्ता व्यवस्थापन कार्यहरू सिक्न आवश्यक छ। यो खण्डमा, Nginx को व्यवस्थापनका लागि आवश्यक आधारभूत कमान्डहरू र समस्या उत्पन्न हुँदा सम्बोधन गर्ने विधिहरू बारे व्याख्या गरिन्छ।Nginx का आधारभूत कमान्डहरू
Ubuntu मा,systemctl
कमान्ड प्रयोग गरेर Nginx को अवस्थालाई व्यवस्थापन गरिन्छ। तल मुख्य सञ्चालनहरूका लागि कमान्डहरू छन्:- Nginx को सुरुवात
sudo systemctl start nginx
- Nginx को रोकावट
sudo systemctl stop nginx
- Nginx को पुनः सुरुवात सेटिङमा ठूलो परिवर्तन गरेमा, पुनः सुरुवात आवश्यक हुन सक्छ।
sudo systemctl restart nginx
- Nginx को पुनः लोड सेटिङ फाइल परिवर्तन गरेमा, पुनः सुरुवात बिना पुनः लोड गरेर लागू गर्न सकिन्छ।
sudo systemctl reload nginx
- Nginx को अवस्था जाँच सही रूपमा सञ्चालन भइरहेको छ कि जाँच गर्न तल प्रयोग गर्नुहोस्:
sudo systemctl status nginx
Nginx को स्वचालित सुरुवात सेटिङ
Nginx लाई स्वचालित सुरुवात गरेर, प्रणाली पुनः सुरुवात पछि म्यानुअल सुरुवात आवश्यक नपर्ने हुन्छ।- स्वचालित सुरुवातलाई सक्रिय पार्ने
sudo systemctl enable nginx
- स्वचालित सुरुवातलाई निष्क्रिय पार्ने आवश्यकता अनुसार निष्क्रिय पार्ने अवस्थामा:
sudo systemctl disable nginx
लग जाँच र समस्या निवारण
Nginx अपेक्षित रूपमा सञ्चालन नभएमा, लग जाँच गरेर कारण पहिचान गर्नुहोस्।- त्रुटि लग जाँच त्रुटि लग तल रेकर्ड गरिएको छ:
sudo tail -f /var/log/nginx/error.log
- पहुँच लग जाँच क्लाइन्टको अनुरोध सामग्री जाँच गर्न सकिन्छ:
sudo tail -f /var/log/nginx/access.log
सामान्य समस्या र समाधान विधि
- Nginx सुरु नहुने
- कारण: सेटिङ फाइलमा त्रुटि हुन सक्छ।
- समाधान विधि:
bash sudo nginx -t
यो कमान्डले सेटिङ फाइलको त्रुटि जाँच गर्छ, समस्या सुधार्नुहोस्।
- परिवर्तन प्रतिबिम्बित नहुने
- कारण: पुनः लोड वा पुनः सुरुवात गरिएको छैन।
- समाधान विधि:
सेटिङ परिवर्तन पछि,
sudo systemctl reload nginx
कार्यान्वयन गर्नुहोस्।
- पोर्ट खुला नभएको
- कारण: फायरवाल सेटिङ कारण।
- समाधान विधि:
bash sudo ufw allow 'Nginx Full'

५. Nginx फायरवाल सेटिङ र सुरक्षा सुदृढीकरण
सुरक्षा Nginx सञ्चालनमा अत्यन्त महत्वपूर्ण छ। यो खण्डमा, Ubuntu को फायरवाल (UFW) प्रयोग गरेर पोर्ट सेटिङ वा Nginx को सुरक्षालाई मजबुत बनाउने विधिहरूको व्याख्या गरिन्छ।UFW प्रयोग गरेर पोर्ट खोल्ने
UFW (Uncomplicated Firewall) Ubuntu मा पूर्व-स्थापित फायरवाल उपकरण हो। Nginx लाई सही रूपमा सञ्चालन गर्नको लागि, ८० नम्बर पोर्ट (HTTP) र ४४३ नम्बर पोर्ट (HTTPS) खोल्न आवश्यक छ।- वर्तमान UFW को अवस्था जाँच्नुहोस्
sudo ufw status
- Nginx को लागि नियम लागू गर्नुहोस् निम्न कमान्डले आवश्यक पोर्टहरू खोल्छ:
sudo ufw allow 'Nginx Full'
- UFW लाई सक्रिय गर्नुहोस् फायरवाल निष्क्रिय छ भने, सक्रिय गर्नुहोस्:
sudo ufw enable
सुरक्षा सुदृढीकरणको लागि अतिरिक्त सेटिङ
- अनावश्यक HTTP विधिहरू निष्क्रिय गर्नुहोस् सर्भरको सुरक्षालाई बढाउनको लागि, अनावश्यक HTTP विधिहरू निष्क्रिय गर्नुहोस्। निम्न सेटिङलाई Nginx को कन्फिगरेसन फाइलमा थप्नुहोस्:
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 444;
}
- डाइरेक्टरी लिस्टिङ निष्क्रिय गर्नुहोस् डाइरेक्टरीको सामग्री सार्वजनिक नहोस् भनेर, निम्नलाई कन्फिगरेसन फाइलमा थप्नुहोस्:
autoindex off;
- SSL/TLS को सुदृढीकरण शक्तिशाली एन्क्रिप्सन विधि प्रयोग गर्नको लागि, SSL सेटिङमा निम्न थप्नुहोस्:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
६. Nginx को प्रदर्शन ट्युनिङ र समस्या समाधान
Nginx लाई उच्च प्रदर्शन भएको वेब सर्भरको रूपमा व्यापक रूपमा प्रयोग गरिन्छ, तर उपयुक्त ट्युनिङ गरेर यसको प्रदर्शनलाई थप सुधार गर्न सकिन्छ। यो खण्डमा, Nginx को प्रदर्शन सुधार्ने विधिहरू र सामान्य समस्याहरूको समाधानबारे व्याख्या गरिन्छ।प्रदर्शन ट्युनिङ
१. वर्कर प्रोसेसको सेटिङ
Nginx ले मल्टि-प्रोसेस डिजाइन अपनाएको छ, र उपयुक्त वर्कर प्रोसेस सङ्ख्या सेट गरेर प्रदर्शनलाई अनुकूलित गर्न सकिन्छ। सेटिङ फाइल/etc/nginx/nginx.conf
लाई सम्पादन गर्नुहोस्:worker_processes auto;
auto
निर्दिष्ट गरेर, सर्भरको CPU कोर सङ्ख्या अनुसार उपयुक्त प्रोसेस सङ्ख्या स्वतः सेट हुन्छ।२. वर्कर प्रोसेस प्रति कनेक्सन सङ्ख्या बढाउनुहोस्
डिफल्ट रूपमा, एउटा वर्कर प्रोसेस प्रति कनेक्सन सङ्ख्या सीमित छ। यो मान बढाएर, उच्च लोड समयमा प्रोसेसिङ क्षमता सुधारिन्छ। सेटिङ फाइलमा निम्न लाइन जाँच्नुहोस् वा थप्नुहोस्:worker_connections 1024;
३. HTTP/2 लाई सक्रिय गर्नुहोस्
HTTP/2 लाई सक्रिय गर्दा, ब्राउजरसँगको सञ्चार कुशल हुन्छ र वेबसाइटको लोडिङ गति सुधारिन्छ।/etc/nginx/sites-available/example.com
फाइल सम्पादन गर्नुहोस् र listen
निर्देशिकालाई निम्नानुसार परिवर्तन गर्नुहोस्:listen 443 ssl http2;
त्यसपछि, Nginx लाई पुनः लोड गर्नुहोस्:sudo systemctl reload nginx
४. सामग्री कम्प्रेसनको सेटिङ
फाइलहरूलाई कम्प्रेस गरेर पठाउँदा, सञ्चार मात्रा घट्छ र पृष्ठ लोडिङ गति सुधारिन्छ। निम्नलाई सेटिङ फाइलमा थप्नुहोस् वा सक्रिय गर्नुहोस्:gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
५. क्यासको सेटिङ
स्थिर फाइलहरूको क्यास सेट गरेर, समान स्रोतहरूका लागि रिक्वेस्ट सङ्ख्या घटाउन सकिन्छ। निम्नलाई सर्भर ब्लकमा थप्नुहोस्:location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires 30d;
access_log off;
}
सामान्य समस्या समाधान
१. उच्च लोड समयमा रिक्वेस्ट प्रोसेसिङ ढिलो हुन्छ
- कारण वर्कर प्रोसेस वा कनेक्सन सङ्ख्या उपयुक्त रूपमा सेट नभएको अवस्थामा धेरै हुन्छ।
- समाधान विधि
- वर्कर प्रोसेस र वर्कर कनेक्सन सङ्ख्या समायोजन गर्नुहोस्।
- आवश्यक भएमा लोड ब्यालेन्सिङ (लोड ब्यालेन्सर) लागू गर्नुहोस्।
२. त्रुटि कोड ४०३ Forbidden देखाइन्छ
- कारण
- Nginx सेटिङ फाइलमा
root
निर्देशिकाको पथ गलत छ। - डाइरेक्टरी वा फाइलको अनुमति उपयुक्त छैन।
- समाधान विधि
- सेटिङ फाइलभित्रको
root
निर्देशिका जाँच्नुहोस् र सही पथ निर्दिष्ट गर्नुहोस्। - निम्न कमान्डले अनुमति सुधार्नुहोस्:
bash sudo chmod -R 755 /var/www/example.com/html sudo chown -R www-data:www-data /var/www/example.com/html
३. सर्भरले टाइमआउट गर्छ
- कारण
- क्लाइन्टको रिक्वेस्ट प्रोसेस गर्ने समय धेरै लामो हुन्छ।
- समाधान विधि टाइमआउट समय समायोजन गर्नुहोस्। सेटिङ फाइलमा निम्न थप्नुहोस् वा परिवर्तन गर्नुहोस्:
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
४. Nginx को रिस्टार्टमा त्रुटि हुन्छ
- कारण सेटिङ फाइलमा त्रुटि समावेश छ।
- समाधान विधि सेटिङ बचत गर्नुअघि निम्न कमान्डले syntax जाँच गर्नुहोस्:
sudo nginx -t
यी चरणहरू लागू गरेर, Nginx को प्रदर्शनलाई अधिकतम रूपमा निकाल्न सकिन्छ र सामान्य समस्याहरू सम्बोधन गर्न सकिन्छ।
७. सारांश र अर्को चरणहरू
यो लेखमा, Ubuntu मा Nginx स्थापना गर्ने र प्रभावकारी रूपमा सेटअप तथा व्यवस्थापन गर्ने विधिलाई विस्तृत रूपमा व्याख्या गरिएको छ। प्रत्येक खण्डमा सिकेका सामग्रीलाई समीक्षा गर्दै, अर्को चरणमा जानको लागि सल्लाह प्रदान गर्दछौं।लेखको सम्पूर्ण समीक्षा
१. Ubuntu मा Nginx स्थापना प्रक्रिया- आवश्यक प्याकेजहरू तयार पारेर, APT प्रयोग गरेर Nginx को स्थापना विधि सिक्यौं।
- फायरवाल (UFW) सेटअप गरेर, Nginx को सञ्चारलाई अनुमति दियौं।
- सेटअप फाइलको स्थान र संरचना बुझेर, भर्चुअल होस्ट र SSL/TLS को सेटअप प्रक्रिया सिक्यौं।
- वास्तविक कोड उदाहरणहरू मार्फत, विशिष्ट सेटअप विधिहरू अर्जुन गर्यौं।
- सुरु गर्ने, रोक्ने, पुनर्सुरु गर्ने, पुनःलोड गर्ने जस्ता आधारभूत सञ्चालनहरू बुझ्यौं।
- समस्या निवारणमा सहयोगी लगहरू जाँच्ने विधि पनि सिक्यौं।
- UFW प्रयोग गरेर पोर्टहरू खोल्ने वा अनावश्यक HTTP विधिहरू निष्क्रिय गर्ने जस्ता सुरक्षा मजबुतीकरण उपायहरू कार्यान्वयन गर्यौं।
- वर्कर प्रोसेसको अनुकूलन, HTTP/2 सक्रिय गर्ने, क्यास सेटअप जस्ता विशिष्ट ट्युनिङ प्रविधिहरू व्याख्या गर्यौं।
- सामान्य समस्याहरूको समाधान विधि सिकेर, थप स्थिर सञ्चालन प्राप्त गर्यौं।
अर्को चरणहरू
यो लेखमा प्रस्तुत आधारभूत स्थापना र सेटअप प्रक्रियाहरू सिकेर, Ubuntu मा Nginx चलाउने आधारभूत ज्ञान प्राप्त गर्नुभएको हुनुपर्छ। थप सीप विकास गर्नको लागि, निम्न अर्को चरणहरू विचार गर्नुहोस्:- उन्नत Nginx सेटअप सिकाइ
- लोड ब्यालेन्सिङ वा रिभर्स प्रोक्सीको विस्तृत सेटअप सिकेर, थप उन्नत सञ्चालन लक्ष्य गर्नुहोस्।
- मोड्युलहरू (उदाहरण: Nginx को RTMP मोड्युल) प्रयोग गरेर, नयाँ प्रयोगका मामिलाहरूमा चुनौती लिनुहोस्।
- सुरक्षाको थप मजबुतीकरण
- वेब एप्लिकेसन फायरवाल (WAF) को परिचालन वा सुरक्षा सम्बन्धी Nginx मोड्युलहरूको प्रयोग विचार गर्नुहोस्।
- स्वचालनको परिचालन
- Ansible वा Docker प्रयोग गरेर, Nginx को डिप्लोयमेन्ट र व्यवस्थापनलाई स्वचालित गर्ने विधि सिकेर, कार्य दक्षता बढाउन सकिन्छ।
- निगरानी र अनुकूलन उपकरणहरूको प्रयोग
- Prometheus वा Grafana जस्ता निगरानी उपकरणहरू परिचालन गरेर, Nginx को प्रदर्शनलाई वास्तविक समयमा दृश्य화 गर्नुहोस्।