Hvernig á að setja upp Nginx með sýndarhýsingum og SSL vottorði


Nginx (stutt fyrir Engine-x) er ókeypis, opinn uppspretta, öflugur, afkastamikill og stigstærður HTTP og öfugur proxy-þjónn, póst- og staðall TCP/UDP proxy-þjónn. Það er auðvelt í notkun og stilla, með einföldu stillingartungumáli. Nginx er nú ákjósanlegur hugbúnaður á vefþjóninum til að knýja mikið hlaðnar síður, vegna sveigjanleika hans og frammistöðu.

Í þessari grein verður fjallað um hvernig á að nota Nginx sem HTTP netþjón, stilla hann til að þjóna vefefni og setja upp nafntengda sýndargestgjafa og búa til og setja upp SSL fyrir öruggar gagnasendingar, þar á meðal sjálfundirritað vottorð á Ubuntu og CentOS .

Hvernig á að setja upp Nginx vefþjón

Byrjaðu fyrst á því að setja upp Nginx pakkann frá opinberu geymslunum með því að nota pakkastjórann þinn eins og sýnt er.

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

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

Eftir að Nginx pakkinn hefur verið settur upp þarftu að ræsa þjónustuna í bili, gera henni kleift að ræsast sjálfkrafa við ræsingu og skoða stöðu hennar með eftirfarandi skipunum. Athugaðu að á Ubuntu ætti það að vera ræst og virkt sjálfkrafa á meðan pakkinn er forstilltur.

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

Á þessum tímapunkti ætti Nginx vefþjónninn að vera í gangi, þú getur staðfest stöðuna með netstat skipuninni.

$ sudo netstat -tlpn | grep nginx

Ef kerfið þitt er með eldvegg virkan þarftu að opna gátt 80 og 443 til að leyfa HTTP og HTTPS umferð í sömu röð, í gegnum það, með því að keyra.

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

Tilvalin aðferð til að prófa Nginx uppsetninguna og athuga hvort hún sé í gangi og geti þjónað vefsíðum er með því að opna vafra og benda á IP netþjóninn.

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

Vinnandi uppsetning ætti að vera sýnd með eftirfarandi skjá.

Hvernig á að stilla Nginx vefþjón

Stillingarskrár Nginx eru staðsettar í möppunni /etc/nginx og alþjóðlega stillingarskráin er staðsett á /etc/nginx/nginx.conf á bæði CentOS og Ubuntu.

Nginx samanstendur af einingum sem er stjórnað af ýmsum stillingarvalkostum, þekktar sem tilskipanir. Tilskipun getur annað hvort verið einföld (í forminu nafni og gildum lýkur með ;) eða blokk (er með aukaleiðbeiningar með því að nota {}). Og blokktilskipun sem inniheldur aðrar tilskipanir er kölluð samhengi.

Allar tilskipanir eru ítarlega útskýrðar í Nginx skjölunum á vefsíðu verkefnisins. Þú getur vísað til þess fyrir frekari upplýsingar.

Á grunnstigi er hægt að nota Nginx til að þjóna kyrrstætt efni eins og HTML og miðlunarskrár, í sjálfstæðum ham, þar sem aðeins sjálfgefinn miðlarablokk er notaður (samlíkt Apache þar sem engir sýndarhýsingar hafa verið stilltir).

Við byrjum á því að útskýra í stuttu máli stillingaruppbygginguna í aðalstillingarskránni.

 
$ sudo vim /etc/nginx/nginx.conf

Ef þú skoðar þessa Nginx stillingarskrá ætti stillingaruppbyggingin að birtast sem hér segir og þetta er nefnt aðalsamhengið, sem inniheldur margar aðrar einfaldar og blokkartilskipanir. Öll vefumferð er meðhöndluð í http samhengi.

user  nginx;
worker_processes  1;
.....

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

events {
       	.....
}

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

Eftirfarandi er sýnishorn af Nginx aðalstillingar (/etc/nginx/nginx.conf) skrá, þar sem http blokkin hér að ofan inniheldur tilskipun um innihald sem segir Nginx hvar á að finna uppsetningarskrár vefsíðunnar (sýndarstillingar hýsingar).

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

Athugaðu að á Ubuntu muntu einnig finna viðbótartilskipun (innihalda /etc/nginx/sites-enabled/*;), þar sem möppan /etc/nginx/sites-enabled/ geymir táknmyndir í stillingarskrár vefsíðunnar sem eru búnar til í/etc/nginx/sites-available/, til að virkja síðurnar. Og með því að eyða tákntengli óvirkar þessi tiltekna staður.

Byggt á uppsetningaruppsprettu þinni finnurðu sjálfgefna vefsíðustillingarskrá á /etc/nginx/conf.d/default.conf (ef þú settir upp frá opinberu NGINX geymslunni og EPEL) eða /etc/nginx/sites-enabled/default (ef þú settir upp frá Ubuntu geymslum).

Þetta er sýnishorn sjálfgefna nginx miðlarablokkarinnar sem staðsett er á /etc/nginx/conf.d/default.conf á prófunarkerfinu.

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

Stutt útskýring á tilskipunum í ofangreindri uppsetningu:

  • hlusta: tilgreinir portið sem þjónninn hlustar á.
  • nafn þjóns: skilgreinir heiti þjónsins sem getur verið nákvæm nöfn, algildisheiti eða regluleg segð.
  • rót: tilgreinir möppuna sem Nginx mun þjóna vefsíðum og öðrum skjölum úr.
  • vísitala: tilgreinir tegund(ir) vísitöluskrár(a) sem á að þjóna.
  • staðsetning: notað til að vinna úr beiðnum um tilteknar skrár og möppur.

Í vafra, þegar þú bendir á netþjóninn með því að nota hýsingarheitið localhost eða IP-tölu hans, vinnur hann úr beiðninni og birtir skrána /var/www/html/index.html og vistar viðburðinn strax í aðgangsskránni (/ var/log/nginx/access.log) með 200 (Í lagi) svari. Ef um villu er að ræða (tilvik sem mistókst), skráir það skilaboðin í villuskránni (/var/log/nginx/error.log).

Til að læra meira um innskráningu í Nginx geturðu vísað til Hvernig á að stilla sérsniðinn aðgang eða villuskrársnið í Nginx.

Í stað þess að nota sjálfgefna annálaskrár geturðu skilgreint sérsniðnar annálaskrár fyrir mismunandi vefsíður, eins og við munum skoða síðar, undir hlutanum „uppsetning sýndargestgjafa sem byggjast á nafni (miðlarablokkir)“.

Til að takmarka aðgang að vefsíðunni þinni/forriti eða sumum hlutum hennar geturðu sett upp grunn HTTP auðkenningu. Þetta er hægt að nota í meginatriðum til að takmarka aðgang að öllum HTTP netþjóninum, einstökum miðlarablokkum eða staðsetningarblokkum.

Byrjaðu á því að búa til skrá sem geymir aðgangsskilríki (notendanafn/lykilorð) með því að nota htpasswd tólið.

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

Sem dæmi skulum við bæta notandastjóra við þennan lista (þú getur bætt við eins mörgum notendum og mögulegt er), þar sem -c valkosturinn er notaður til að tilgreina lykilorðsskrána og -B til að dulkóða lykilorðið. Þegar þú ýtir á [Enter] verðurðu beðinn um að slá inn lykilorð notenda:

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

Síðan skulum við úthluta réttum heimildum og eignarhaldi á lykilorðsskrána (skipta um notanda og hóp nginx fyrir www-gögn á Ubuntu).

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

Eins og við nefndum áðan geturðu takmarkað aðgang að vefþjóninum þínum, einni vefsíðu (með því að nota netþjónablokk þess) eða ákveðna skrá eða skrá. Hægt er að nota tvær gagnlegar tilskipanir til að ná þessu:

  • auth_basic – kveikir á staðfestingu á notandanafni og lykilorði með því að nota \HTTP Basic Authentication samskiptareglur.
  • auth_basic_user_file – tilgreinir skilríkisskrána.

Sem dæmi munum við sýna hvernig á að vernda möppuna með lykilorði /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;
    }
}

Nú skaltu vista breytingar og endurræsa Nginx þjónustuna.

$ sudo systemctl restart nginx 

Næst þegar þú vísar vafranum þínum á möppuna hér að ofan (http://localhost/protected) verðurðu beðinn um að slá inn innskráningarskilríki (notendanafn admin og valið lykilorð).

Vel heppnuð innskráning gerir þér kleift að fá aðgang að innihaldi möppunnar, annars færðu villuna „401 heimild krafist“.

Hvernig á að setja upp nafnabyggða sýndargestgjafa (þjónablokkir) í Nginx

Miðlarasamhengið gerir kleift að geyma mörg lén/síður á og þjóna frá sömu líkamlegu vélinni eða sýndar einkaþjóni (VPS). Hægt er að lýsa yfir mörgum netþjónsblokkum (sem tákna sýndargestgjafa) innan http samhengisins fyrir hverja síðu/lén. Nginx ákveður hvaða netþjónn vinnur úr beiðni byggt á beiðnihausnum sem hann fær.

Við munum sýna þetta hugtak með því að nota eftirfarandi dummy lén, hvert staðsett í tilgreindri möppu:

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

Næst skaltu úthluta viðeigandi heimildum á möppunni fyrir hverja síðu.

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

Búðu til sýnishorn af index.html skrá í hverri public_html möppu.

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

Næst skaltu búa til stillingarskrár fyrir netþjónablokk fyrir hverja síðu í /etc/httpd/conf.d möppunni.

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

Bættu við eftirfarandi yfirlýsingu um netþjónsblokk í werelinux-console.net.conf skrána.

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

Næst skaltu bæta við eftirfarandi yfirlýsingu um netþjónsblokk í welovelinux.com.conf skránni.

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

Til að beita nýlegum breytingum skaltu endurræsa Nginx vefþjóninn.

$ sudo systemctl restart nginx

og með því að benda vefþjóninum þínum á ofangreind heimilisföng ættir þú að sjá aðalsíður dummy lénanna.

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

Mikilvægt: Ef þú ert með SELinux virkt, leyfir sjálfgefin uppsetning þess ekki Nginx að fá aðgang að skrám utan vel þekktra viðurkenndra staða (svo sem /etc/nginx fyrir stillingar, /var/log/nginx fyrir logs, /var/www/html fyrir vefskrár osfrv.).

Þú getur séð þetta með því annað hvort að slökkva á SELinux eða stilla rétt öryggissamhengi. Fyrir frekari upplýsingar, skoðaðu þessa handbók: nota Nginx og Nginx Plus með SELinux á Nginx Plus vefsíðunni.

Hvernig á að setja upp og stilla SSL með Nginx

SSL vottorð hjálpa til við að virkja öruggt http (HTTPS) á síðuna þína, sem er nauðsynlegt til að koma á traustri/öruggri tengingu milli notenda og netþjóns þíns með því að dulkóða upplýsingarnar sem eru sendar til, frá eða innan síðunnar þinnar.

Við munum fjalla um hvernig á að búa til og setja upp sjálfundirritað vottorð og búa til vottorðsundirritunarbeiðni (CSR) til að fá SSL vottorð frá vottorðayfirvöldum (CA), til að nota með Nginx.

Sjálfundirrituð skírteini eru ókeypis að búa til og eru nánast góð að fara í prófunarskyni og fyrir innri LAN-þjónustu eingöngu. Fyrir netþjóna sem snúa að almenningi er mjög mælt með því að nota vottorð gefið út af CA (til dæmis Let's Encrypt) til að viðhalda áreiðanleika þess.

Til að búa til sjálfstætt undirritað vottorð skaltu fyrst búa til möppu þar sem vottorðin þín verða geymd.

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

Búðu síðan til sjálfundirritaða vottorðið þitt og lykilinn með openssl skipanalínutólinu.

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

Við skulum lýsa stuttlega valkostunum sem notaðir eru í skipuninni hér að ofan:

  • req -X509 – sýnir að við erum að búa til x509 vottorð.
  • -hnútar (NO DES) – þýðir ekki dulkóða lykilinn.
  • -dagar 365 – tilgreinir fjölda daga sem vottorðið mun gilda fyrir.
  • -newkey rsa:2048 – tilgreinir að lykillinn sem myndaður er með RSA reiknirit ætti að vera 2048 bita.
  • -keyout /etc/nginx/ssl-certs/nginx.key – tilgreinir alla slóð RSA lykilsins.
  • -out /etc/nginx/ssl-certs/nginx.crt – tilgreinir alla slóð vottorðsins.

Næst skaltu opna sýndarhýsilstillingarskrána þína og bæta eftirfarandi línum við yfirlýsingu um netþjónsblokk sem hlustar á port 443. Við munum prófa með sýndarhýsingarskránni /etc/nginx/conf.d/wearelinux-console.net.conf.

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

Bættu síðan ssl tilskipuninni við nginx stillingarskrá, hún ætti að líta svipað út og hér að neðan.

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

}

Endurræstu nú Nginx og beindu vafranum þínum á eftirfarandi heimilisfang.

https://www.wearelinux-console.net

Ef þú vilt kaupa SSL vottorð frá CA þarftu að búa til vottorðsundirritunarbeiðni (CSR) eins og sýnt er.

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

Þú getur líka búið til CSR úr núverandi einkalykli.

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

Síðan þarftu að senda CSR sem er búið til til CA til að biðja um útgáfu CA-undirritaðs SSL vottorðs. Þegar þú hefur fengið vottorðið þitt frá CA geturðu stillt það eins og sýnt er hér að ofan.

Í þessari grein höfum við útskýrt hvernig á að setja upp og stilla Nginx; fjallað um hvernig á að setja upp nafntengda sýndarhýsingu með SSL til að tryggja gagnasendingar milli vefþjóns og biðlara.

Ef þú varðst fyrir einhverjum áföllum meðan á nginx uppsetningar-/stillingarferlinu stóð eða hefur einhverjar spurningar eða athugasemdir, notaðu athugasemdareyðublaðið hér að neðan til að ná í okkur.