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.