Kif Tinstalla Nginx b'Virtwali Hosts u Ċertifikat SSL


Nginx (qosor għal Engine-x) huwa server proxy HTTP u reverse b'xejn, sors miftuħ, b'saħħtu, ta 'prestazzjoni għolja u skalabbli, server proxy standard TCP/UDP tal-posta u. Huwa faċli biex tużah u tikkonfigura, b'lingwa ta 'konfigurazzjoni sempliċi. Nginx issa huwa s-softwer tal-web server preferut biex iħaddem siti mgħobbija ħafna, minħabba l-iskalabbiltà u l-prestazzjoni tiegħu.

F'dan l-artikolu se tiddiskuti kif tuża Nginx bħala server HTTP, tikkonfigurah biex isservi kontenut tal-web, u twaqqaf hosts virtwali bbażati fuq l-isem, u toħloq u tinstalla SSL għal trażmissjonijiet siguri tad-dejta, inkluż ċertifikat iffirmat minnu nnifsu fuq Ubuntu u CentOS .

Kif Tinstalla Nginx Web Server

L-ewwel ibda billi tinstalla l-pakkett Nginx mir-repożitorji uffiċjali billi tuża l-maniġer tal-pakketti tiegħek kif muri.

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

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

Wara li jiġi installat il-pakkett Nginx, għandek bżonn tibda s-servizz għalissa, tippermettilu li jibda awtomatikament fil-ħin tal-ibbutjar u ara l-istatus tiegħu, billi tuża l-kmandi li ġejjin. Innota li fuq Ubuntu, għandu jinbeda u jiġi attivat awtomatikament waqt li l-pakkett ikun ikkonfigurat minn qabel.

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

F'dan il-punt, is-server tal-web Nginx għandu jkun qed jaħdem, tista 'tivverifika l-istatus bil-kmand netstat.

$ sudo netstat -tlpn | grep nginx

Jekk is-sistema tiegħek għandha firewall attivat, għandek bżonn tiftaħ il-port 80 u 443 biex tippermetti t-traffiku HTTP u HTTPS rispettivament, permezz tiegħu, billi taħdem.

------------ 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 

Il-metodu ideali biex tittestja l-installazzjoni Nginx u tiċċekkja jekk tkunx qed taħdem u tistax isservi paġni tal-web huwa billi tiftaħ web browser u tipponta lejn l-IP tas-server.

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

Installazzjoni li taħdem għandha tkun indikata mill-iskrin li ġej.

Kif tikkonfigura Nginx Web Server

Il-fajls tal-konfigurazzjoni ta 'Nginx jinsabu fid-direttorju /etc/nginx u l-fajl tal-konfigurazzjoni globali jinsab f'/etc/nginx/nginx.conf kemm fuq CentOS kif ukoll fuq Ubuntu.

Nginx huwa magħmul minn moduli li huma kkontrollati minn diversi għażliet ta 'konfigurazzjoni, magħrufa bħala direttivi. Direttiva tista' tkun jew sempliċi (fil-forma isem u valuri mitmuma b';) jew timblokka (għandha struzzjonijiet żejda mehmuża bl-użu ta' {}). U direttiva blokk li fiha direttivi oħra tissejjaħ kuntest.

Id-direttivi kollha huma spjegati b'mod komprensiv fid-dokumentazzjoni ta 'Nginx fil-websajt tal-proġett. Tista' tirreferi għaliha għal aktar informazzjoni.

F'livell fundamentali, Nginx jista 'jintuża biex iservi kontenut statiku bħal HTML u fajls tal-midja, f'modalità waħedha, fejn jintuża biss il-blokk default tas-server (analogu għal Apache fejn ma jkun ġie kkonfigurat l-ebda hosts virtwali).

Nibdew billi nispjegaw fil-qosor l-istruttura tal-konfigurazzjoni fil-fajl tal-konfigurazzjoni prinċipali.

 
$ sudo vim /etc/nginx/nginx.conf

Jekk tħares lejn dan il-fajl tal-konfigurazzjoni Nginx, l-istruttura tal-konfigurazzjoni għandha tidher kif ġej u dan jissejjaħ il-kuntest ewlieni, li fih ħafna direttivi oħra sempliċi u blokk. It-traffiku kollu tal-web jiġi ttrattat fil-kuntest http.

user  nginx;
worker_processes  1;
.....

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

events {
       	.....
}

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

Dan li ġej huwa kampjun ta' fajl tal-konfigurazzjoni prinċipali ta' Nginx (/etc/nginx/nginx.conf), fejn il-blokk http hawn fuq fih direttiva include li tgħid lil Nginx fejn issib fajls tal-konfigurazzjoni tal-websajt (konfigurazzjonijiet tal-host virtwali).

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;
}

Innota li fuq Ubuntu, issib ukoll direttiva ta' inklużjoni addizzjonali (inkludi /etc/nginx/sites-enabled/*;), fejn id-direttorju /etc/nginx/sites-enabled/ jaħżen symlinks għall-fajls tal-konfigurazzjoni tal-websajts maħluqa f'/ etc/nginx/sites-available/, biex jippermettu s-siti. U t-tħassir ta' symlink tiddiżattiva dak is-sit partikolari.

Ibbażat fuq is-sors tal-installazzjoni tiegħek, issib il-fajl tal-konfigurazzjoni tal-websajt default fuq /etc/nginx/conf.d/default.conf (jekk installajt mir-repożitorju uffiċjali ta' NGINX u EPEL) jew /etc/nginx/sites-enabled/default (jekk installajt minn repożitorji Ubuntu).

Dan huwa l-kampjun default tagħna tal-blokk tas-server nginx li jinsab f'/etc/nginx/conf.d/default.conf fis-sistema tat-test.

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

Spjegazzjoni qasira tad-direttivi fil-konfigurazzjoni ta’ hawn fuq:

  • isma: jispeċifika l-port li jisma' s-server.
  • server_name: jiddefinixxi l-isem tas-server li jista' jkun ismijiet eżatti, ismijiet wildcard, jew espressjonijiet regolari.
  • root: jispeċifika d-direttorju li minnu Nginx se jservi paġni tal-web u dokumenti oħra.
  • indiċi: jispeċifika t-tip(i) ta' fajl(i) ta' l-indiċi li għandhom jiġu nnotifikati.
  • lokazzjoni: użata biex tipproċessa talbiet għal fajls u folders speċifiċi.

Minn web browser, meta tipponta lejn is-server billi tuża l-hostname localhost jew l-indirizz IP tagħha, tipproċessa t-talba u sservi l-fajl /var/www/html/index.html, u immedjatament issalva l-avveniment fir-reġistru tal-aċċess tiegħu (/ var/log/nginx/access.log) b'rispons ta' 200 (OK). F'każ ta' żball (avveniment li falla), jirreġistra l-messaġġ fil-ġurnal tal-iżbalji (/var/log/nginx/error.log).

Biex titgħallem aktar dwar il-illoggjar f'Nginx, tista' tirreferi għal Kif tikkonfigura l-Aċċess Custom jew il-Formats tal-Logg tal-iżbalji f'Nginx.

Minflok ma tuża l-fajls ta’ log default, tista’ tiddefinixxi fajls ta’ logs tad-dwana għal siti web differenti, kif se nħarsu lejn aktar tard, taħt it-taqsima \setting up virtual hosts (server blocks).

Sabiex tirrestrinġi l-aċċess għall-websajt/applikazzjoni tiegħek jew xi partijiet minnha, tista' tissettja awtentikazzjoni HTTP bażika. Dan jista 'jintuża essenzjalment biex jirrestrinġi l-aċċess għas-server HTTP kollu, blokki tas-server individwali jew blokki tal-lokalità.

Ibda billi toħloq fajl li jaħżen il-kredenzjali tal-aċċess tiegħek (username/password) billi tuża l-utilità htpasswd.

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

Bħala eżempju, ejja nżidu l-utent admin ma’ din il-lista (tista’ żżid kemm jista’ jkun utenti), fejn l-għażla -c tintuża biex tispeċifika l-fajl tal-password, u l--B biex tikkodifika l-password. Ladarba tolqot [Enter], inti tintalab iddaħħal il-password tal-utenti:

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

Imbagħad, ejja nassenjaw il-permessi u l-pussess xierqa għall-fajl tal-password (ibdel l-utent u l-grupp nginx b'www-data fuq Ubuntu).

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

Kif semmejna qabel, tista' tirrestrinġi l-aċċess għall-webserver tiegħek, websajt waħda (bl-użu tal-blokk tas-server tagħha) jew direttorju jew fajl speċifiku. Żewġ direttivi utli jistgħu jintużaw biex jinkiseb dan:

  • auth_basic – jixgħel il-validazzjoni tal-isem tal-utent u l-password bl-użu tal-protokoll \HTTP Awtentikazzjoni Bażika.
  • auth_basic_user_file – jispeċifika l-fajl tal-kredenzjali.

Bħala eżempju, se nuru kif nipproteġu b'password id-direttorju /var/www/html/protected.

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;
    }
}

Issa, issalva l-bidliet u erġa ibda s-servizz Nginx.

$ sudo systemctl restart nginx 

Il-ħin li jmiss li tipponta l-browser tiegħek lejn id-direttorju ta’ hawn fuq (http://localhost/protected) inti tintalab iddaħħal il-kredenzjali tal-login tiegħek (username admin u l-password magħżula).

Login b'suċċess jippermettilek li taċċessa l-kontenut tad-direttorju, inkella ikollok żball 401 Awtorizzazzjoni Meħtieġa.

Kif Twaqqaf hosts Virtwali bbażati fuq l-Ismijiet (Blokki tas-Server) f'Nginx

Il-kuntest tas-server jippermetti li oqsma/siti multipli jiġu maħżuna fi u moqdija mill-istess magna fiżika jew server privat virtwali (VPS). Blokki multipli ta' servers (li jirrappreżentaw hosts virtwali) jistgħu jiġu ddikjarati fil-kuntest http għal kull sit/dominju. Nginx jiddeċiedi liema server jipproċessa talba abbażi tal-header tat-talba li jirċievi.

Aħna ser nuru dan il-kunċett bl-użu tad-dominji finta li ġejjin, kull wieħed jinsab fid-direttorju speċifikat:

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

Sussegwentement, tassenja l-permessi xierqa fuq id-direttorju għal kull sit.

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

Issa, oħloq kampjun index.html fajl ġewwa kull direttorju public_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>

Sussegwentement, oħloq il-fajls tal-konfigurazzjoni tal-blokk tas-server għal kull sit ġewwa d-direttorju /etc/httpd/conf.d.

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

Żid id-dikjarazzjoni tal-blokk tas-server li ġejja fil-fajl 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;
        }
     
}

Sussegwentement, żid id-dikjarazzjoni tal-blokk tas-server li ġejja fil-fajl 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;
        }
     
}

Biex tapplika l-bidliet riċenti, ibda mill-ġdid is-server tal-web Nginx.

$ sudo systemctl restart nginx

u li tipponta s-server tal-web tiegħek lejn l-indirizzi ta 'hawn fuq għandu jġiegħlek tara l-paġni ewlenin tad-dominji finta.

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

Importanti: Jekk għandek SELinux attivat, il-konfigurazzjoni default tiegħu ma tippermettix lil Nginx jaċċessa fajls barra minn postijiet awtorizzati magħrufa (bħal /etc/nginx għal konfigurazzjonijiet, /var/log/nginx għal zkuk, /var/www/html għall-fajls tal-web eċċ.).

Tista 'timmaniġġja dan billi jew tiddiżattiva SELinux, jew issettja l-kuntest tas-sigurtà korrett. Għal aktar informazzjoni, irreferi għal din il-gwida: tuża Nginx u Nginx Plus ma 'SELinux fuq il-websajt ta' Nginx Plus.

Kif tinstalla u tikkonfigura SSL b'Nginx

Iċ-ċertifikati SSL jgħinu biex jippermettu http sikur (HTTPS) fuq is-sit tiegħek, li huwa essenzjali biex tiġi stabbilita konnessjoni fdata/sikura bejn l-utenti finali u s-server tiegħek billi tikkodifika l-informazzjoni li tiġi trażmessa lejn, minn, jew ġewwa s-sit tiegħek.

Aħna se nkopru kif noħolqu u ninstallaw ċertifikat iffirmat lilhom infushom, u niġġeneraw talba għall-iffirmar ta 'ċertifikat (CSR) biex takkwista ċertifikat SSL minn awtorità taċ-ċertifikat (CA), biex tużah ma' Nginx.

Ċertifikati ffirmati waħedhom huma ħielsa li joħolqu u huma prattikament tajbin biex imorru għal skopijiet ta 'ttestjar u għal servizzi interni ta' LAN biss. Għal servers li jħarsu lejn il-pubbliku, huwa rakkomandat ħafna li tuża ċertifikat maħruġ minn CA (per eżempju Let's Encrypt) biex tinżamm l-awtentiċità tiegħu.

Biex toħloq ċertifikat iffirmat minnha nnifisha, l-ewwel oħloq direttorju fejn se jinħażnu ċ-ċertifikati tiegħek.

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

Imbagħad iġġenera ċ-ċertifikat awtofirmat tiegħek u ċ-ċavetta billi tuża l-għodda tal-linja tal-kmand openssl.

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

Ejja niddeskrivu fil-qosor l-għażliet użati fil-kmand ta 'hawn fuq:

  • req -X509 – juri li qed noħolqu ċertifikat x509.
  • -nodes (NO DES) – tfisser \ma tikkodifikax iċ-ċavetta.
  • -jiem 365 – jispeċifika n-numru ta' ġranet li ċ-ċertifikat ikun validu għalihom.
  • -newkey rsa:2048 – jispeċifika li ċ-ċavetta ġġenerata bl-użu tal-algoritmu RSA għandha tkun 2048-bit.
  • -keyout /etc/nginx/ssl-certs/nginx.key – jispeċifika l-mogħdija sħiħa taċ-ċavetta RSA.
  • -out /etc/nginx/ssl-certs/nginx.crt – jispeċifika l-mogħdija sħiħa taċ-ċertifikat.

Sussegwentement, iftaħ il-fajl tal-konfigurazzjoni tal-host virtwali tiegħek u żid il-linji li ġejjin għal dikjarazzjoni ta 'blokk tas-server li tisma' fuq il-port 443. Aħna ser nittestjaw bil-fajl tal-host virtwali /etc/nginx/conf.d/wearelinux-console.net.conf.

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

Imbagħad żid id-direttiva ssl mal-fajl ta 'konfigurazzjoni nginx, għandha tidher simili għal hawn taħt.

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;
        }

}

Issa erġa ibda l-Nginx u ippunta l-browser tiegħek lejn l-indirizz li ġej.

https://www.wearelinux-console.net

Jekk tixtieq tixtri ċertifikat SSL minn CA, trid tiġġenera talba għall-iffirmar taċ-ċertifikat (CSR) kif muri.

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

Tista' wkoll toħloq CSR minn ċavetta privata eżistenti.

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

Imbagħad, trid tibgħat is-CSR li jiġi ġġenerat lil CA biex titlob il-ħruġ ta’ ċertifikat SSL iffirmat minn CA. Ladarba tirċievi ċ-ċertifikat tiegħek mill-CA, tista' tikkonfigurah kif muri hawn fuq.

F'dan l-artikolu, spjegajna kif tinstalla u tikkonfigura Nginx; kopra kif tissettja hosting virtwali bbażat fuq l-isem b'SSL biex tiżgura t-trażmissjonijiet tad-dejta bejn is-server tal-web u klijent.

Jekk esperjenzajt xi intoppi matul il-proċess ta 'installazzjoni/konfigurazzjoni ta' nginx tiegħek jew għandek xi mistoqsijiet jew kummenti, uża l-formola ta 'feedback hawn taħt biex tilħaqna.