Kaip įdiegti „Nginx“ naudojant virtualius pagrindinius kompiuterius ir SSL sertifikatą
Nginx (sutrumpinimas iš Engine-x) yra nemokamas, atvirojo kodo, galingas, didelio našumo ir keičiamo dydžio HTTP ir atvirkštinis tarpinis serveris, pašto ir standartinis TCP/UDP tarpinis serveris. serveris. Jį lengva naudoti ir konfigūruoti paprasta konfigūravimo kalba. Dėl savo mastelio ir našumo „Nginx“ dabar yra pageidaujama žiniatinklio serverio programinė įranga, skirta stipriai apkrautoms svetainėms maitinti.
Šiame straipsnyje bus aptarta, kaip naudoti „Nginx“ kaip HTTP serverį, sukonfigūruoti jį, kad jis teiktų žiniatinklio turinį, nustatyti vardinius virtualius pagrindinius kompiuterius, sukurti ir įdiegti SSL saugiam duomenų perdavimui, įskaitant savarankiškai pasirašytą sertifikatą „Ubuntu“ ir „CentOS“. .
Kaip įdiegti „Nginx“ žiniatinklio serverį
Pirmiausia pradėkite diegdami Nginx paketą iš oficialių saugyklų naudodami paketų tvarkyklę, kaip parodyta.
------------ On Ubuntu ------------
sudo apt update
sudo apt install nginx
------------ On CentOS ------------
sudo yum update
sudo yum install epel-release
sudo yum install nginx
Įdiegę „Nginx“ paketą, turite paleisti paslaugą dabar, įgalinti ją automatiškai paleisti įkrovos metu ir peržiūrėti jo būseną naudodami šias komandas. Atminkite, kad naudojant Ubuntu jis turėtų būti paleistas ir įgalintas automatiškai, kol paketas iš anksto sukonfigūruotas.
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
Šiuo metu „Nginx“ žiniatinklio serveris turėtų būti sukurtas ir veikia, galite patikrinti būseną naudodami komandą „netstat“.
sudo netstat -tlpn | grep nginx
Jei jūsų sistemoje įgalinta ugniasienė, turite atidaryti prievadus 80 ir 443, kad leistų HTTP ir HTTPS srautą atitinkamai per jį, bėgant.
------------ 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
Idealus būdas išbandyti „Nginx“ diegimą ir patikrinti, ar jis veikia ir gali aptarnauti tinklalapius, yra atidaryti žiniatinklio naršyklę ir nurodyti serverio IP adresą.
http://Your-IP-Address
OR
http://Your-Domain.com
Veikiantis diegimas turėtų būti rodomas kitame ekrane.
Kaip sukonfigūruoti „Nginx“ žiniatinklio serverį
„Nginx“ konfigūracijos failai yra kataloge /etc/nginx
, o visuotinis konfigūracijos failas yra adresu /etc/nginx/nginx.conf
tiek „CentOS“, tiek „Ubuntu“.
„Nginx“ sudaro moduliai, valdomi įvairiomis konfigūracijos parinktimis, vadinamomis direktyvomis. Direktyvas gali būti paprastas (formos pavadinimas ir reikšmės baigiasi ;
) arba blokas (turi papildomos instrukcijos, pateiktos naudojant {}
). O blokinė direktyva, kurioje yra kitų direktyvų, vadinama kontekstu.
Visos direktyvos yra išsamiai paaiškintos Nginx dokumentacijoje projekto svetainėje. Norėdami gauti daugiau informacijos, galite kreiptis į jį.
Kaip teikti statinį turinį naudojant „Nginx“ autonominiu režimu
Pagrindiniu lygmeniu „Nginx“ gali būti naudojamas statiniam turiniui, pvz., HTML ir medijos failams, aptarnauti autonominiu režimu, kai naudojamas tik numatytasis serverio blokas (panašiai kaip „Apache“, kur nebuvo sukonfigūruota jokių virtualių kompiuterių).
Pradėsime trumpai paaiškindami konfigūracijos struktūrą pagrindiniame konfigūracijos faile.
sudo vim /etc/nginx/nginx.conf
Jei pažvelgsite į šį „Nginx“ konfigūracijos failą, konfigūracijos struktūra turėtų pasirodyti taip, ir tai vadinama pagrindiniu kontekstu, kuriame yra daug kitų paprastų ir blokuotų direktyvų. Visas žiniatinklio srautas tvarkomas http kontekste.
user nginx;
worker_processes 1;
.....
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
.....
events {
.....
}
http {
server{
…….
}
.....
}
Toliau pateikiamas pavyzdinis Nginx pagrindinės konfigūracijos failas (/etc/nginx/nginx.conf), kuriame aukščiau esančiame http bloke yra įtraukimo direktyva, kuri nurodo Nginx, kur rasti svetainės konfigūracijos failus (virtualios prieglobos konfigūracijos). .
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;
}
Atminkite, kad Ubuntu taip pat rasite papildomą įtraukimo direktyvą (įtraukti /etc/nginx/sites-enabled/*;), kur katalogas /etc /nginx/sites-enabled/ saugo nuorodas į svetainių konfigūracijos failus, sukurtus /etc/nginx/sites-available/, kad įgalintų svetaines. Ir ištrynus simbolinę nuorodą ta svetainė išjungiama.
Atsižvelgdami į diegimo šaltinį, numatytąjį svetainės konfigūracijos failą rasite adresu /etc/nginx/conf.d/default.conf (jei įdiegėte iš oficialios NGINX saugyklos ir EPEL) arba /etc/nginx/sites-enabled/default (jei įdiegėte iš Ubuntu saugyklų).
Tai yra mūsų numatytojo „nginx“ serverio bloko pavyzdys, esantis /etc/nginx/conf.d/default.conf bandomojoje sistemoje.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/html/;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Trumpas aukščiau pateiktos konfigūracijos direktyvų paaiškinimas:
- klausytis: nurodo prievadą, kurio serveris klauso.
- serverio_pavadinimas: apibrėžia serverio pavadinimą, kuris gali būti tikslūs pavadinimai, pakaitos simbolių pavadinimai arba reguliarios išraiškos.
- root: nurodo katalogą, iš kurio „Nginx“ teiks tinklalapius ir kitus dokumentus.
- indeksas: nurodo pateikiamo (-ų) indekso failo (-ų) tipą (-us).
- vieta: naudojama konkrečių failų ir aplankų užklausoms apdoroti.
Kai iš žiniatinklio naršyklės nukreipiate į serverį naudodami hostname localhost arba jo IP adresą, jis apdoroja užklausą ir pateikia failą /var/www/html/index.html . ir nedelsiant išsaugo įvykį savo prieigos žurnale (/var/log/nginx/access.log) su 200 (Gerai) atsakymu. Jei įvyksta klaida (įvykis nepavyko), jis įrašo pranešimą klaidų žurnale (/var/log/nginx/error.log).
Norėdami sužinoti daugiau apie prisijungimą prie Nginx, žr. Kaip konfigūruoti tinkintą prieigą arba klaidų žurnalo formatus naudojant Nginx.
Užuot naudoję numatytuosius žurnalo failus, galite apibrėžti pasirinktinius žurnalo failus skirtingoms svetainėms, kaip apžvelgsime vėliau, skyriuje „Virtualių prieglobų (serverio blokų) nustatymas pavadinimu“.
Kaip apriboti prieigą prie tinklalapio naudojant „Nginx“.
Norėdami apriboti prieigą prie savo svetainės/programos ar kai kurių jos dalių, galite nustatyti pagrindinį HTTP autentifikavimą. Tai iš esmės gali būti naudojama norint apriboti prieigą prie viso HTTP serverio, atskirų serverio blokų arba vietos blokų.
Pradėkite sukurdami failą, kuriame bus saugomi jūsų prieigos kredencialai (naudotojo vardas/slaptažodis), naudodami htpasswd priemonę.
yum install httpd-tools #RHEL/CentOS
sudo apt install apache2-utils #Debian/Ubuntu
Pavyzdžiui, į šį sąrašą įtraukkime vartotojo administratorių (galite įtraukti kuo daugiau vartotojų), kur parinktis -c
naudojama slaptažodžio failui nurodyti, o -B
. norėdami užšifruoti slaptažodį. Kai paspausite [Enter], jūsų bus paprašyta įvesti naudotojo slaptažodį:
sudo htpasswd -Bc /etc/nginx/conf.d/.htpasswd admin
Tada priskirkime reikiamus leidimus ir nuosavybės teisę slaptažodžio failui (Ubuntu naudotoją ir grupę nginx pakeiskite www-data).
sudo chmod 640 /etc/nginx/conf.d/.htpasswd
sudo chown nginx:nginx /etc/nginx/conf.d/.htpasswd
Kaip minėjome anksčiau, galite apriboti prieigą prie savo žiniatinklio serverio, vienos svetainės (naudodami jos serverio bloką) arba konkretų katalogą ar failą. Tam gali būti naudojamos dvi naudingos direktyvos:
- auth_basic – įjungia vartotojo vardo ir slaptažodžio patvirtinimą naudojant „HTTP pagrindinio autentifikavimo“ protokolą.
- auth_basic_user_file – nurodo kredencialų failą.
Kaip pavyzdį parodysime, kaip slaptažodžiu apsaugoti katalogą /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;
}
}
Dabar išsaugokite pakeitimus ir iš naujo paleiskite „Nginx“ paslaugą.
sudo systemctl restart nginx
Kai kitą kartą nukreipsite naršyklę į aukščiau esantį katalogą (http://localhost/protected), jūsų bus paprašyta įvesti prisijungimo duomenis (naudotojo vardą admin ir pasirinktą slaptažodį ).
Sėkmingas prisijungimas leidžia pasiekti katalogo turinį, kitu atveju gausite klaidą „Reikalingas 401 leidimas“.
Kaip nustatyti vardais pagrįstus virtualius pagrindinius kompiuterius (serverio blokus) „Nginx“.
Serverio kontekstas leidžia saugoti kelis domenus/svetaines ir aptarnauti iš tos pačios fizinės mašinos arba virtualaus privataus serverio (VPS). Kiekvienos svetainės/domeno http kontekste gali būti deklaruojami keli serverių blokai (atitinkantys virtualius pagrindinius kompiuterius). „Nginx“ nusprendžia, kuris serveris apdoros užklausą pagal gautą užklausos antraštę.
Mes parodysime šią koncepciją naudodami šiuos netikrus domenus, kurių kiekvienas yra nurodytame kataloge:
- wearelinux-console.net – /var/www/html/wearelinux-console.net/
- welovelinux.com – /var/www/html/welovelinux.com/
Tada kiekvienai svetainei priskirkite atitinkamus leidimus kataloge.
sudo chmod -R 755 /var/www/html/wearelinux-console.net/public_html
sudo chmod -R 755 /var/www/html/welovelinux.com/public_html
Dabar kiekviename public_html kataloge sukurkite pavyzdinį index.html failą.
<html>
<head>
<title>www.wearelinux-console.net</title>
</head>
<body>
<h1>This is the index page of www.wearelinux-console.net</h1>
</body>
</html>
Tada sukurkite serverio bloko konfigūracijos failus kiekvienai svetainei kataloge /etc/httpd/conf.d.
sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf
sudo vi /etc/nginx/conf.d/welovelinux.com.conf
Pridėkite šią serverio bloko deklaraciją į failą 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;
}
}
Tada į failą welovelinux.com.conf pridėkite šią serverio bloko deklaraciją.
server {
listen 80;
server_name welovelinux.com;
root /var/www/html/welovelinux.com/public_html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Norėdami pritaikyti naujausius pakeitimus, iš naujo paleiskite „Nginx“ žiniatinklio serverį.
sudo systemctl restart nginx
ir nukreipę savo žiniatinklio serverį į aukščiau nurodytus adresus, turėtumėte matyti pagrindinius netikrų domenų puslapius.
http://wearelinux-console.net
http://welovelinux.com
Svarbu: jei įgalinote SELinux, numatytoji konfigūracija neleidžia Nginx pasiekti failų, esančių už gerai žinomų įgaliotų vietų (pvz., /etc/nginx konfigūracijai, /var/log/nginx žurnalams, /var/www/html žiniatinklio failams ir kt.) .
Tai galite padaryti išjungę SELinux arba nustatydami tinkamą saugos kontekstą. Daugiau informacijos rasite šiame vadove: Nginx ir Nginx Plus naudojimas su SELinux Nginx Plus svetainėje.
Kaip įdiegti ir konfigūruoti SSL naudojant Nginx
SSL sertifikatai padeda įgalinti saugų http (HTTPS) jūsų svetainėje, o tai būtina norint užmegzti patikimą/saugų ryšį tarp galutinių naudotojų ir jūsų serverio užšifruojant informaciją, yra perduodamas į jūsų svetainę, iš jos arba joje.
Aptarsime, kaip sukurti ir įdiegti savarankiškai pasirašytą sertifikatą ir sugeneruoti sertifikato pasirašymo užklausą (CSR), kad gautumėte SSL sertifikatą iš sertifikatų institucijos (CA), naudoti su Nginx.
Savarankiškai pasirašytus sertifikatus galima kurti nemokamai ir praktiškai juos galima naudoti testavimo tikslais ir tik vidinėms LAN paslaugoms. Viešiesiems serveriams primygtinai rekomenduojama naudoti CA išduotą sertifikatą (pvz., „Let’s Encrypt“), kad būtų išlaikytas jo autentiškumas.
Norėdami sukurti savarankiškai pasirašytą sertifikatą, pirmiausia sukurkite katalogą, kuriame bus saugomi jūsų sertifikatai.
sudo mkdir /etc/nginx/ssl-certs/
Tada sugeneruokite savo pasirašytą sertifikatą ir raktą naudodami komandų eilutės įrankį 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
Trumpai apibūdinkime parinktis, naudojamas aukščiau pateiktoje komandoje:
- req -X509 – rodo, kad kuriame x509 sertifikatą.
- -mazgai (BE DES) – reiškia „nešifruoti rakto“.
- -365 dienos – nurodo, kiek dienų sertifikatas galios.
- -newkey rsa:2048 – nurodo, kad raktas, sugeneruotas naudojant RSA algoritmą, turi būti 2048 bitų.
- -keyout /etc/nginx/ssl-certs/nginx.key – nurodo visą RSA rakto kelią.
- -out /etc/nginx/ssl-certs/nginx.crt – nurodo visą sertifikato kelią.
Tada atidarykite virtualiosios prieglobos konfigūracijos failą ir pridėkite šias eilutes prie serverio bloko deklaracijos klausymosi prievade 443. Bandysime naudodami virtualaus pagrindinio kompiuterio failą /etc/nginx/conf.d/wearelinux-console.net.conf.
sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf
Tada pridėkite ssl direktyvą prie nginx konfigūracijos failo, ji turėtų atrodyti panašiai kaip žemiau.
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;
}
}
Dabar iš naujo paleiskite „Nginx“ ir nukreipkite naršyklę šiuo adresu.
https://www.wearelinux-console.net
Jei norite įsigyti SSL sertifikatą iš CA, turite sugeneruoti sertifikato pasirašymo užklausą (CSR), kaip parodyta.
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl-certs/example.com.key -out /etc/nginx/ssl-certs/example.com.csr
Taip pat galite sukurti CSR iš esamo privataus rakto.
sudo openssl req -key /etc/nginx/ssl-certs/example.com.key -new -out /etc/nginx/ssl-certs/example.com.csr
Tada turite išsiųsti sugeneruotą CSR CA, kad prašytumėte išduoti CA pasirašytą SSL sertifikatą. Gavę sertifikatą iš CA, galite jį konfigūruoti, kaip parodyta aukščiau.
Taip pat skaitykite: galutinis vadovas, kaip apsaugoti, sustiprinti ir pagerinti Nginx žiniatinklio serverio veikimą
Santrauka
Šiame straipsnyje paaiškinome, kaip įdiegti ir konfigūruoti Nginx; apžvelgė, kaip nustatyti vardais pagrįstą virtualų prieglobą naudojant SSL, kad būtų užtikrintas duomenų perdavimas tarp žiniatinklio serverio ir kliento.
Jei nginx diegimo/konfigūravimo proceso metu patyrėte kokių nors nesėkmių arba turite klausimų ar komentarų, naudokite toliau pateiktą atsiliepimų formą, kad su mumis susisiektumėte.