वर्चुअल होस्ट और एसएसएल सर्टिफिकेट के साथ निगनेक्स को कैसे स्थापित करें


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

इस लेख में चर्चा की जाएगी कि कैसे नग्नेक्स को एक HTTP सर्वर के रूप में उपयोग किया जाता है, इसे वेब सामग्री परोसने के लिए कॉन्फ़िगर करें और नाम-आधारित वर्चुअल होस्ट सेट अप करें, और सुरक्षित डेटा प्रसारण के लिए एसएसएल स्थापित करें और स्थापित करें, जिसमें उबंटू और सेंटो पर एक स्व-हस्ताक्षरित प्रमाण पत्र शामिल है। ।

Nginx वेब सर्वर को कैसे स्थापित करें

पहले दिखाए गए अनुसार अपने पैकेज मैनेजर का उपयोग करके आधिकारिक रिपॉजिटरी से नग्नेक्स पैकेज स्थापित करके शुरू करें।

------------ On Ubuntu ------------ 
$ sudo apt update 
$ sudo apt install nginx 

------------ On CentOS ------------
$ sudo yum update 
$ sudo yum install epel-release 
$ sudo yum install nginx 

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

$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx

इस बिंदु पर, Nginx वेब सर्वर को ऊपर और चलना चाहिए, आप नेटस्टैट कमांड के साथ स्थिति को सत्यापित कर सकते हैं।

$ sudo netstat -tlpn | grep nginx

यदि आपके सिस्टम में फ़ायरवॉल सक्षम है, तो आपको HTTP और HTTPS ट्रैफ़िक की अनुमति के लिए पोर्ट 80 और 443 खोलने की आवश्यकता है क्रमशः, इसके माध्यम से, चलकर।

------------ On CentOS ------------
$ sudo firewall-cmd --permanent --add-port=80/tcp
$ sudo firewall-cmd --permanent --add-port=443/tcp
$ sudo firewall-cmd --reload

------------ On Ubuntu ------------ 
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw reload 

Nginx इंस्टॉलेशन का परीक्षण करने और यह जाँचने के लिए कि क्या वह वेब पेज चला रहा है और सर्वर के IP की ओर इशारा करता है, वेब पेज चलाने में सक्षम है या नहीं।

http://Your-IP-Address
OR
http://Your-Domain.com

एक कार्य स्थापना को निम्न स्क्रीन द्वारा इंगित किया जाना चाहिए।

Nginx वेब सर्वर को कॉन्फ़िगर कैसे करें

Nginx की कॉन्फ़िगरेशन फ़ाइलें निर्देशिका /etc/nginx में स्थित हैं और वैश्विक कॉन्फ़िगरेशन फ़ाइल CentOS और Ubuntu दोनों पर /etc/nginx/nginx.conf पर स्थित है।

नेगनेक्स उन मॉड्यूलों से बना है जो विभिन्न कॉन्फ़िगरेशन विकल्पों द्वारा नियंत्रित होते हैं, जिन्हें निर्देश के रूप में जाना जाता है। एक निर्देश या तो सरल हो सकता है (एक कोड के साथ समाप्त किए गए फॉर्म नाम और मूल्यों में; ) या ब्लॉक ( का उपयोग करके संलग्न अतिरिक्त निर्देश हैं) {} )। और एक ब्लॉक निर्देश जिसमें अन्य निर्देश होते हैं, को संदर्भ कहा जाता है।

सभी निर्देशों को बड़े पैमाने पर परियोजना की वेबसाइट में Nginx प्रलेखन में समझाया गया है। अधिक जानकारी के लिए आप इसे संदर्भित कर सकते हैं।

एक मूलभूत स्तर पर, Nginx का उपयोग स्थिर सामग्री जैसे HTML और मीडिया फ़ाइलों की सेवा के लिए किया जाता है, स्टैंडअलोन मोड में, जहां केवल डिफ़ॉल्ट सर्वर ब्लॉक का उपयोग किया जाता है (Apache के अनुरूप जहां कोई वर्चुअल होस्ट कॉन्फ़िगर नहीं किया गया है)।

हम मुख्य कॉन्फ़िगरेशन फ़ाइल में कॉन्फ़िगरेशन संरचना को संक्षेप में समझाकर शुरू करेंगे।

 
$ sudo vim /etc/nginx/nginx.conf

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

user  nginx;
worker_processes  1;
.....

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
.....

events {
       	.....
}

http {
	server{
		…….
	}
	.....
}

निम्नलिखित एक नमूना Nginx मुख्य कॉन्फ़िगरेशन ( /etc/nginx/nginx.conf ) फ़ाइल है, जहां ऊपर दिए गए http ब्लॉक में एक निर्देश शामिल है जो Nginx को बताता है कि वेबसाइट कॉन्फ़िगरेशन फ़ाइलों (वर्चुअल होस्ट कॉन्फ़िगरेशन) को कहाँ खोजें ।

Nginx कॉन्फ़िगरेशन फ़ाइल

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

   include /etc/nginx/mime.types;
   default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
	
    include /etc/nginx/conf.d/*.conf;
}

ध्यान दें कि Ubuntu पर, आपको एक अतिरिक्त शामिल निर्देश मिलेगा ( शामिल/etc/nginx/साइट्स-सक्षम/*; ), जहां निर्देशिका /etc/nginx/sites-enable/ साइट्स को सक्षम करने के लिए /etc/nginx/sites-available/ में बनाई गई वेबसाइट कॉन्फिगरेशन फाइलों के लिए सिमलाइन को स्टोर करता है। और एक सिमलिंक को हटाना उस विशेष साइट को निष्क्रिय कर देता है।

अपने इंस्टॉलेशन स्रोत के आधार पर, आपको /etc/nginx/conf.d/default.conf पर डिफ़ॉल्ट वेबसाइट कॉन्फ़िगरेशन फ़ाइल मिलेगी (यदि आप आधिकारिक NGINX रिपॉजिटरी से इंस्टॉल करते हैं) और EPEL ) या /etc/nginx/साइट्स-सक्षम/डिफ़ॉल्ट (यदि आप Ubuntu रिपॉजिटरी से इंस्टॉल किए गए हैं)।

यह परीक्षण प्रणाली पर /etc/nginx/conf.d/default.conf पर स्थित हमारा नमूना डिफ़ॉल्ट nginx सर्वर ब्लॉक है।

server {
    listen    80 default_server;
    listen    [::]:80 default_server;
    server_name    _;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
}

उपरोक्त विन्यास में निर्देशों का संक्षिप्त विवरण:

  • listen: specifies the port the server listens on.
  • server_name: defines the server name which can be exact names, wildcard names, or regular expressions.
  • root: specifies the directory out of which Nginx will serve web pages and other documents.
  • index: specifies the type(s) of index file(s) to be served.
  • location: used to process requests for specific files and folders.

एक वेब ब्राउज़र से, जब आप सर्वर को होस्टनाम लोकलहोस्ट या उसके आईपी पते का उपयोग करके इंगित करते हैं, तो यह अनुरोध को संसाधित करता है और फ़ाइल /var/www/html/index.html , और तुरंत इवेंट को उसके एक्सेस लॉग ( /var/log/nginx/access.log ) से बचाता है 200 (OK) प्रतिक्रिया के साथ। एक त्रुटि (असफल घटना) के मामले में, यह त्रुटि लॉग में संदेश रिकॉर्ड करता है ( /var/log/nginx/error.log )।

Nginx में लॉगिंग के बारे में अधिक जानने के लिए, आप Nginx में कस्टम एक्सेस या त्रुटि लॉग प्रारूप को कॉन्फ़िगर कैसे करें का उल्लेख कर सकते हैं।

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

अपनी वेबसाइट/एप्लिकेशन या इसके कुछ हिस्सों तक पहुंच को प्रतिबंधित करने के लिए, आप बुनियादी HTTP प्रमाणीकरण सेटअप कर सकते हैं। यह पूरे HTTP सर्वर, व्यक्तिगत सर्वर ब्लॉक या स्थान ब्लॉक तक पहुंच को प्रतिबंधित करने के लिए अनिवार्य रूप से उपयोग किया जा सकता है।

एक फ़ाइल बनाकर प्रारंभ करें जो htpasswd उपयोगिता का उपयोग करके आपकी पहुंच क्रेडेंशियल ( उपयोगकर्ता नाम/पासवर्ड ) संग्रहीत करेगा।

 
$ yum install httpd-tools		#RHEL/CentOS
$ sudo apt install apache2-utils	#Debian/Ubuntu

उदाहरण के रूप में, आइए इस सूची में उपयोगकर्ता व्यवस्थापक जोड़ें (आप अधिक से अधिक उपयोगकर्ताओं को जोड़ सकते हैं), जहां पासवर्ड फ़ाइल निर्दिष्ट करने के लिए -c विकल्प का उपयोग किया जाता है, और -B < पासवर्ड कूटने के लि। एक बार जब आप [Enter] को हिट करते हैं, तो आपको उपयोगकर्ता पासवर्ड दर्ज करने के लिए कहा जाएगा:

$ sudo htpasswd -Bc /etc/nginx/conf.d/.htpasswd admin

फिर, पासवर्ड फ़ाइल के लिए उचित अनुमतियाँ और स्वामित्व असाइन करें (उबंटू पर www-data उपयोगकर्ता और समूह nginx को बदलें)।

$ sudo chmod 640 /etc/nginx/conf.d/.htpasswd
$ sudo chown nginx:nginx /etc/nginx/conf.d/.htpasswd

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

  • auth_basic – turns on validation of user name and password using the “HTTP Basic Authentication” protocol.
  • auth_basic_user_file – specifies the credential’s file.

एक उदाहरण के रूप में, हम दिखाएंगे कि कैसे निर्देशिका-पासवर्ड को सुरक्षित करें /var/www/html/संरक्षित

server {
    listen         80 default_server;
    server_name    localhost;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
    location /protected/ {
        auth_basic              "Restricted Access!";
        auth_basic_user_file    /etc/nginx/conf.d/.htpasswd;
    }
}

अब, परिवर्तन सहेजें और Nginx सेवा को पुनरारंभ करें।

$ sudo systemctl restart nginx 

अगली बार जब आप अपने ब्राउज़र को उपरोक्त निर्देशिका ( http:/localhost/संरक्षित ) पर इंगित करते हैं, तो आपको अपने लॉगिन क्रेडेंशियल (उपयोगकर्ता नाम व्यवस्थापक और चुने हुए पासवर्ड दर्ज करने के लिए कहा जाएगा )।

एक सफल लॉगिन आपको निर्देशिका की सामग्री तक पहुंचने देता है, अन्यथा आपको " 401 प्राधिकरण आवश्यक " त्रुटि मिलेगी।

Nginx में नाम-आधारित वर्चुअल होस्ट (सर्वर ब्लॉक) को कैसे सेटअप करें

सर्वर संदर्भ कई डोमेन/साइटों को एक ही भौतिक मशीन या वर्चुअल प्राइवेट सर्वर (VPS) से संग्रहीत और परोसा जा सकता है। प्रत्येक साइट/डोमेन के लिए http संदर्भ में एकाधिक सर्वर ब्लॉक (वर्चुअल होस्ट्स का प्रतिनिधित्व) घोषित किया जा सकता है। Nginx यह तय करता है कि कौन सा सर्वर अनुरोध प्राप्त करने वाले हेडर के आधार पर अनुरोध करता है।

हम निम्नलिखित डमी डोमेन का उपयोग करके इस अवधारणा को प्रदर्शित करेंगे, प्रत्येक निर्दिष्ट निर्देशिका में स्थित है:

  • wearelinux-console.net – /var/www/html/wearelinux-console.net/
  • welovelinux.com – /var/www/html/welovelinux.com/

इसके बाद, प्रत्येक साइट के लिए निर्देशिका पर उचित अनुमति दें।

$ sudo chmod -R 755 /var/www/html/wearelinux-console.net/public_html 
$ sudo chmod -R 755 /var/www/html/welovelinux.com/public_html 

अब, प्रत्येक public_html निर्देशिका के अंदर एक नमूना index.html फ़ाइल बनाएं।

<html>
	<head>
		<title>www.wearelinux-console.net</title>
	</head>
<body>
	<h1>This is the index page of www.wearelinux-console.net</h1>
</body>
</html>

इसके बाद, /etc/httpd/conf.d निर्देशिका के अंदर प्रत्येक साइट के लिए सर्वर ब्लॉक विन्यास फाइल बनाएं।

$ sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf
$ sudo vi /etc/nginx/conf.d/welovelinux.com.conf

wearelinux-console.net.conf फ़ाइल में निम्न सर्वर ब्लॉक घोषणा जोड़ें।

wearelinux-console.net.conf

server {
    listen         80;
    server_name  wearelinux-console.net;
    root           /var/www/html/wearelinux-console.net/public_html ;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

इसके बाद, welovelinux.com.conf फ़ाइल में निम्न सर्वर ब्लॉक घोषणा जोड़ें।

welovelinux.com.conf

server {
    listen         80;
    server_name    welovelinux.com;
    root           /var/www/html/welovelinux.com/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

हाल के परिवर्तनों को लागू करने के लिए, Nginx वेब सर्वर को पुनरारंभ करें।

$ sudo systemctl restart nginx

और उपरोक्त पते पर अपने वेब सर्वर को इंगित करते हुए आपको डमी डोमेन के मुख्य पृष्ठ देखने चाहिए।

http://wearelinux-console.net
http://welovelinux.com

लाल

आप SELinux को अक्षम करके, या सही सुरक्षा संदर्भ सेट करके इसे संभाल सकते हैं। अधिक जानकारी के लिए, इस गाइड को देखें: Nginx Plus वेबसाइट पर SELinux के साथ Nginx और Nginx Plus का उपयोग करना।

Nginx के साथ SSL को कैसे स्थापित और कॉन्फ़िगर करें

SSL प्रमाणपत्र आपकी साइट पर सुरक्षित http ( HTTPS ) को सक्षम करने में मदद करते हैं, जो जानकारी को एन्क्रिप्ट करके अंतिम उपयोगकर्ताओं और आपके सर्वर के बीच एक विश्वसनीय/सुरक्षित कनेक्शन स्थापित करने के लिए आवश्यक है आपकी साइट के भीतर, से या के लिए प्रेषित किया जाता है।

हम एक स्व-हस्ताक्षरित प्रमाण पत्र बनाने और स्थापित करने के तरीके को कवर करेंगे, और एक प्रमाणपत्र प्राधिकारी से एक एसएसएल प्रमाणपत्र प्राप्त करने के लिए ( सीएसआर ) प्रमाण पत्र बनाने का अनुरोध करेंगे ( सीए ), Nginx के साथ उपयोग करने के लिए।

स्व-हस्ताक्षरित प्रमाण पत्र बनाने के लिए स्वतंत्र हैं और परीक्षण प्रयोजनों के लिए और आंतरिक लैन-केवल सेवाओं के लिए जाने के लिए व्यावहारिक रूप से अच्छे हैं। सार्वजनिक-सामना करने वाले सर्वरों के लिए, इसकी प्रामाणिकता को बनाए रखने के लिए CA (उदाहरण के लिए Let's Encrypt) द्वारा जारी प्रमाण पत्र का उपयोग करने की अत्यधिक अनुशंसा की जाती है।

एक स्व-हस्ताक्षरित प्रमाण पत्र बनाने के लिए, पहले एक निर्देशिका बनाएं जहां आपके प्रमाणपत्र संग्रहीत किए जाएंगे।

$ sudo mkdir /etc/nginx/ssl-certs/

फिर अपने स्व-हस्ताक्षरित प्रमाण पत्र और ओप्सनल कमांड लाइन टूल का उपयोग करके कुंजी उत्पन्न करें।

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl-certs/nginx.key -out /etc/nginx/ssl-certs/nginx.crt

उपरोक्त कमांड में उपयोग किए गए विकल्पों का संक्षेप में वर्णन करें:

  • req -X509 – shows we are creating a x509 certificate.
  • -nodes (NO DES) – means “don’t encrypt the key”.
  • -days 365 – specifies the number of days the certificate will be valid for.
  • -newkey rsa:2048 – specifies that the key generated using RSA algorithm should be 2048-bit.
  • -keyout /etc/nginx/ssl-certs/nginx.key – specifies the full path of the RSA key.
  • -out /etc/nginx/ssl-certs/nginx.crt – specifies the full path of the certificate.

अगला, अपनी वर्चुअल होस्ट कॉन्फ़िगरेशन फ़ाइल खोलें और पोर्ट 443 पर सुनकर सर्वर ब्लॉक घोषणा में निम्नलिखित पंक्तियों को जोड़ें। हम वर्चुअल होस्ट फ़ाइल /etc/nginx/conf.d/wearelinux-console.net.conf के साथ परीक्षण करेंगे।

$ sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf

तब nsx कॉन्फ़िगरेशन फ़ाइल में ssl निर्देश जोड़ें, यह नीचे के समान दिखना चाहिए।

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_trusted_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/nginx.key;
    
    server_name  wearelinux-console.net;
    root           /var/www/html/wearelinux-console.net/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }

}

अब Nginx को पुनरारंभ करें और अपने ब्राउज़र को निम्न पते पर इंगित करें।

https://www.wearelinux-console.net

यदि आप एक CA से SSL प्रमाणपत्र खरीदना चाहते हैं, तो आपको दिखाए गए अनुसार एक प्रमाणपत्र हस्ताक्षर अनुरोध (CSR) जेनरेट करना होगा।

$ sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl-certs/example.com.key -out /etc/nginx/ssl-certs/example.com.csr

आप किसी मौजूदा निजी कुंजी से CSR भी बना सकते हैं।

$ sudo openssl req -key /etc/nginx/ssl-certs/example.com.key -new -out /etc/nginx/ssl-certs/example.com.csr

फिर, आपको CA-हस्ताक्षरित SSL प्रमाणपत्र जारी करने का अनुरोध करने के लिए CSR जो CA के लिए उत्पन्न होता है भेजने की आवश्यकता है। एक बार जब आप CA से अपना प्रमाणपत्र प्राप्त कर लेते हैं, तो आप इसे ऊपर दिखाए अनुसार कॉन्फ़िगर कर सकते हैं।

इस लेख में, हमने समझाया है कि कैसे Nginx को स्थापित और कॉन्फ़िगर करना है; वेब सर्वर और क्लाइंट के बीच डेटा प्रसारण सुरक्षित करने के लिए SSL के साथ नाम-आधारित वर्चुअल होस्टिंग सेटअप करने के लिए कैसे कवर किया गया।

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