Nginxi installimine virtuaalsete hostide ja SSL-sertifikaadiga


Nginx (lühend lühendist Engine-x) on tasuta, avatud lähtekoodiga, võimas, suure jõudlusega ja skaleeritav HTTP- ja vastupidine puhverserver, posti- ja standardne TCP/UDP-puhverserver. Seda on lihtne kasutada ja konfigureerida lihtsa konfiguratsioonikeelega. Nginx on nüüd oma mastaapsuse ja jõudluse tõttu eelistatud veebiserveri tarkvara tugevalt koormatud saitide toiteks.

Selles artiklis arutatakse, kuidas kasutada Nginxit HTTP-serverina, konfigureerida see veebisisu teenindamiseks ja seadistada nimepõhised virtuaalsed hostid ning luua ja installida SSL turvaliste andmeedastuste jaoks, sealhulgas ise allkirjastatud sertifikaat Ubuntu ja CentOS-is .

Nginxi veebiserveri installimine

Kõigepealt installige Nginxi pakett ametlikest hoidlatest oma paketihalduri abil, nagu näidatud.

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

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

Pärast Nginxi paketi installimist peate teenuse praegu käivitama, lubama selle käivitamisel automaatselt käivitada ja vaadata selle olekut, kasutades järgmisi käske. Pange tähele, et Ubuntu puhul peaks see olema paketi eelkonfigureerimise ajal käivitatud ja lubatud.

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

Siinkohal peaks Nginxi veebiserver olema töökorras, olekut saate kontrollida käsku netstat.

$ sudo netstat -tlpn | grep nginx

Kui teie süsteemil on lubatud tulemüür, peate avama pordid 80 ja 443, et lubada selle kaudu vastavalt HTTP ja HTTPS-liikluse käivitamine.

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

Ideaalne meetod Nginxi installimise testimiseks ja selle kontrollimiseks, kas see töötab ja suudab veebilehti teenida, on veebibrauseri avamine ja osutamine serveri IP-le.

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

Toimiv install peaks olema tähistatud järgmise ekraaniga.

Nginxi veebiserveri konfigureerimine

Nginxi konfiguratsioonifailid asuvad kataloogis /etc/nginx ja globaalne konfiguratsioonifail asub aadressil /etc/nginx/nginx.conf nii CentOS-is kui ka Ubuntus.

Nginx koosneb moodulitest, mida juhivad erinevad seadistusvõimalused, mida nimetatakse direktiivideks. Direktiiv võib olla nii lihtne (vormi nime ja väärtustega, mis on lõpetatud ; ) kui ka plokk (lisakäsud on lisatud koodiga {} ). Ja teisi direktiive sisaldavat plokidirektiivi nimetatakse kontekstiks.

Kõiki direktiive on põhjalikult selgitatud projekti veebisaidi Nginxi dokumentatsioonis. Lisateavet leiate sellest.

Põhitasandil saab Nginxit kasutada staatilise sisu, näiteks HTML- ja meediumifailide, teenimiseks iseseisvas režiimis, kus kasutatakse ainult vaikeserveriplokki (analoogselt Apache'iga, kus pole ühtegi virtuaalset hosti konfigureeritud).

Alustame peamise konfiguratsioonifaili konfiguratsioonistruktuuri lühikese selgitamisega.

 
$ sudo vim /etc/nginx/nginx.conf

Kui uurite seda Nginxi konfiguratsioonifaili, peaks konfiguratsioonistruktuur ilmuma järgmiselt ja sellele viidatakse kui peamist konteksti, mis sisaldab palju muid lihtsaid ja blokeerivaid direktiive. Kogu veebiliiklust käsitletakse http-kontekstis.

user  nginx;
worker_processes  1;
.....

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

events {
       	.....
}

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

Järgmine on Nginxi põhikonfiguratsiooni (/etc/nginx/nginx.conf) näidisfail, kus ülaltoodud http-plokk sisaldab kaasamisdirektiivi, mis ütleb Nginxile, kust leida veebisaidi konfiguratsioonifailid (virtuaalsed hostikonfiguratsioonid).

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

Pange tähele, et Ubuntust leiate ka täiendava kaasamisdirektiivi (include/etc/nginx/sites-enabled/*;), kuhu kataloog/etc/nginx/sites-enabled/salvestab sümbolid linkidega veebisaitide konfiguratsioonifailidele etc/nginx/sites-available /, saitide lubamiseks. Ja sümboli linki kustutamine keelab selle konkreetse saidi.

Teie installiallika põhjal leiate veebisaidi vaikekonfiguratsioonifaili aadressilt /etc/nginx/conf.d/default.conf (kui olete installinud ametlikust NGINX-i hoidlast ja EPEL-ist) või/etc/nginx/sites-enabled/default (kui installisite Ubuntu hoidlatest).

See on meie vaikimisi nginxi serveriplokk, mis asub testisüsteemis /etc/nginx/conf.d/default.conf.

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

Lühike selgitus ülaltoodud konfiguratsioonide direktiivide kohta:

  • kuulama: määrab porti, mida server kuulab.
  • serveri_nimi: määratleb serveri nime, mis võib olla täpne nimi, metamärgi nimi või regulaaravaldis.
  • juur: määrab kataloogi, kust Nginx veebilehti ja muid dokumente teenindab.
  • register: määrab serveeritavate indeksfailide tüübi (tüübid).
  • asukoht: kasutatakse konkreetsete failide ja kaustade taotluste töötlemiseks.

Kui osutate veebibrauseris serverile, kasutades hostinime localhost või selle IP-aadressi, töötleb see päringut ja serveerib faili /var/www/html/index.html ning salvestab sündmuse kohe oma juurdepääsulogile (/ var/log/nginx/access.log) vastusega 200 (OK). Vea (ebaõnnestunud sündmus) korral salvestab see teate tõrke logi (/var/log/nginx/error.log).

Nginxis sisselogimise kohta lisateabe saamiseks võite lugeda artiklit Kuidas konfigureerida Nginxis kohandatud juurdepääsu või tõrke logivorminguid.

Vaikimisi logifailide asemel võite määratleda kohandatud logifailid erinevatele veebisaitidele, nagu me hiljem vaatame, jaotises\"Nimepõhiste virtuaalsete hostide (serveriplokkide seadistamine)".

Juurdepääsu piiramiseks oma veebisaidile/rakendusele või selle mõnele osale saate seadistada põhilise HTTP-autentimise. Seda saab kasutada peamiselt kogu HTTP-serveri, üksikute serveriplokkide või asukohablokkide juurdepääsu piiramiseks.

Alustage faili htpasswd abil, mis salvestab teie juurdepääsu mandaadid (kasutajanimi/parool).

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

Lisame näiteks sellesse loendisse kasutaja administraatori (saate lisada nii palju kasutajaid kui võimalik), kus paroolifaili määramiseks kasutatakse valikut -c ja -B parooli krüptimiseks. Kui vajutate [Enter], palutakse teil sisestada kasutaja parool:

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

Seejärel määragem paroolifailile õiged õigused ja omandiõigus (asendage kasutaja ja rühm nginx Ubuntu www-andmetega).

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

Nagu me varem mainisime, saate piirata juurdepääsu oma veebiserverile, ühele veebisaidile (kasutades selle serveriplokki) või konkreetsele kataloogile või failile. Selle saavutamiseks võib kasutada kahte kasulikku direktiivi:

  • auth_basic - lülitab kasutajanime ja parooli valideerimise sisse protokolli\"HTTP Basic Authentication» abil.
  • auth_basic_user_file - määrab mandaadi faili.

Näitena näitame, kuidas kataloogi/var/www/html/kaitstud parooliga kaitsta.

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

Nüüd salvestage muudatused ja taaskäivitage Nginxi teenus.

$ sudo systemctl restart nginx 

Järgmine kord, kui suunate oma brauseri ülaltoodud kataloogi (http:// localhost/protected), palutakse teil sisestada oma sisselogimisandmed (kasutajanime admin ja valitud parool).

Edukas sisselogimine võimaldab teil pääseda juurde kataloogi sisule, vastasel juhul kuvatakse viga\"401 Nõutav autoriseerimine".

Nginxis nimepõhiste virtuaalsete hostide (serveriblokkide) seadistamine

Serveri kontekst võimaldab mitme füüsilise masina või virtuaalse privaatserveri (VPS) kaudu salvestada ja teenindada mitut domeeni/saiti. Iga saidi/domeeni http-kontekstis saab deklareerida mitu serveriplokki (mis esindavad virtuaalseid masinaid). Nginx otsustab vastuvõetud päise põhjal, milline server päringut töötleb.

Demonstreerime seda kontseptsiooni, kasutades järgmisi näivdomeene, mis kõik asuvad määratud kataloogis:

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

Seejärel määrake iga saidi jaoks kataloogis sobivad õigused.

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

Nüüd looge iga public_html kataloogi sees faili index.html näidis.

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

Järgmisena looge serveriploki konfiguratsioonifailid igale saidile kataloogis /etc/httpd/conf.d.

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

Lisage järgmine serveriploki deklaratsioon faili 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;
        }
     
}

Järgmisena lisage järgmine serveriploki deklaratsioon faili 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;
        }
     
}

Viimaste muudatuste rakendamiseks taaskäivitage Nginx veebiserver.

$ sudo systemctl restart nginx

ja veebiserveri ülalnimetatud aadressidele suunamine peaks nägema näivdomeenide põhilehti.

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

Tähtis: kui teil on lubatud SELinux, ei võimalda selle vaikekonfiguratsioon Nginxil juurde pääseda failidele väljaspool tuntud volitatud asukohti (näiteks konfiguratsioonide korral/etc/nginx, logide puhul/var/log/nginx,/var/www/html veebifailide jaoks jne.).

Sellega saate hakkama, keelates kas SELinuksi või määrates õige turvakonteksti. Lisateavet leiate sellest juhendist: Nginxi ja Nginx Plusi kasutamine koos SELinuxiga Nginx Plusi veebisaidil.

SSL-i installimine ja konfigureerimine Nginxi abil

SSL-sertifikaadid aitavad teie saidil lubada turvalise http (HTTPS), mis on oluline usaldusväärse/turvalise ühenduse loomiseks lõppkasutajate ja teie serveri vahel, krüpteerides teie saidile, saidilt või selle siseselt edastatava teabe.

Käsitleme, kuidas luua ja installida ise allkirjastatud sertifikaati ning genereerida sertifikaadi allkirjastamistaotlus (CSR) SSL-sertifikaadi saamiseks sertifikaadiasutuselt (CA), et seda Nginxiga kasutada.

Ise allkirjastatud sertifikaate saab vabalt luua ja neid on praktiliselt hea kasutada testimise eesmärgil ja ainult LAN-i siseste teenuste jaoks. Avaliku poole pöörduvate serverite puhul on selle autentsuse tagamiseks soovitatav kasutada CA välja antud sertifikaati (näiteks Let’s Encrypt).

Ise allkirjastatud sertifikaadi loomiseks looge kõigepealt kataloog, kuhu teie sertifikaadid salvestatakse.

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

Seejärel genereerige oma allkirjastatud sertifikaat ja võti openssl käsurea tööriista abil.

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

Kirjeldame lühidalt ülaltoodud käsus kasutatud võimalusi:

  • req -X509 - näitab, et loome x509 sertifikaadi.
  • -sõlmed (NO DES) - tähendab\"ei krüpteeri võtit".
  • -päevad 365 - määrab mitu päeva sertifikaat kehtib.
  • -newkey rsa: 2048 - määrab, et RSA algoritmi abil loodud võti peaks olema 2048-bitine.
  • -keyout /etc/nginx/ssl-certs/nginx.key - määrab RSA-võtme täieliku tee.
  • -out /etc/nginx/ssl-certs/nginx.crt - määrab sertifikaadi täieliku tee.

Järgmisena avage oma virtuaalse hosti konfiguratsioonifail ja lisage järgmised read serveriploki deklaratsioonile, mis kuulab porti 443. Testime virtuaalse hostifailiga /etc/nginx/conf.d/wearelinux-console.net.conf.

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

Seejärel lisage ssl direktiiv nginxi konfiguratsioonifaili, see peaks välja nägema sarnane allolevaga.

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

}

Nüüd taaskäivitage Nginx ja suunake brauser järgmisele aadressile.

https://www.wearelinux-console.net

Kui soovite osta SSL-sertifikaadi CA-lt, peate genereerima sertifikaadi allkirjastamistaotluse (CSR), nagu näidatud.

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

Samuti saate CSR-i luua olemasolevast privaatvõtmest.

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

Seejärel peate saatma loodud CSR-i CA-le, et taotleda CA-ga allkirjastatud SSL-sertifikaadi väljastamist. Kui olete sertifikaadi CA-lt kätte saanud, saate selle konfigureerida, nagu eespool näidatud.

Selles artiklis oleme selgitanud, kuidas Nginxi installida ja konfigureerida; käsitleti, kuidas seadistada nimepõhist virtuaalserverit SSL-iga, et tagada veebiserveri ja kliendi vahel andmete edastamine.

Kui teil on nginxi installimise/konfigureerimise käigus mingeid tagasilööke või teil on küsimusi või kommentaare, kasutage meiega ühendust saamiseks allpool olevat tagasisidevormi.