Ինչպե՞ս տեղադրել և կարգավորել Nginx-ը CentOS 7-ում:
Nginx-ը հանրաճանաչ վեբ սերվեր է, որը հայտնի է իր բարձր կատարողականությամբ, մասշտաբայնությամբ և ռեսուրսների ցածր օգտագործմամբ: Այն սովորաբար օգտագործվում է որպես հակադարձ պրոքսի, բեռի հավասարակշռող և HTTP քեշ: Այս հոդվածում մենք կքննարկենք, թե ինչպես տեղադրել և կարգավորել Nginx-ը CentOS 7-ում:
Քայլ 1. Համակարգի թարմացում
Նախքան որևէ փաթեթի տեղադրումը սկսելը, կարևոր է համակարգը թարմացնել վերջին տարբերակին: Դա անելու համար գործարկեք հետևյալ հրամանը −
sudo yum update
Քայլ 2. Տեղադրեք Nginx
Համակարգը թարմացնելուց հետո մենք կարող ենք շարունակել Nginx-ի տեղադրումը: Մենք կարող ենք տեղադրել Nginx-ը՝ օգտագործելով հետևյալ հրամանը -
sudo yum install nginx
Տեղադրման գործընթացը կսկսվի, և ձեզ կառաջարկվի հաստատել տեղադրումը` մուտքագրելով «y» և սեղմելով Enter:
Քայլ 3. Սկսեք Nginx-ը և միացրեք այն, որ այն սկսի Boot-ից
Տեղադրումն ավարտվելուց հետո մենք կարող ենք սկսել Nginx ծառայությունը՝ գործարկելով հետևյալ հրամանը −
sudo systemctl start nginx
Որպեսզի Nginx-ը ինքնաբերաբար գործարկվի բեռնման ժամանակ, գործարկեք հետևյալ հրամանը -
sudo systemctl enable nginx
Քայլ 4. Կարգավորեք Firewall-ը, որպեսզի թույլատրի Nginx Traffic-ը
Լռելյայնորեն, CentOS 7-ը գալիս է միացված firewall-ով: Մենք պետք է թույլ տանք, որ HTTP տրաֆիկը firewall-ով մուտք գործի վեբ սերվեր: Մենք կարող ենք թույլատրել HTTP տրաֆիկը, օգտագործելով հետևյալ հրամանը -
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
Քայլ 5. Փորձարկել Nginx-ի տեղադրումը
Այժմ, երբ մենք տեղադրել և կազմաձևել ենք Nginx-ը, մենք կարող ենք փորձարկել այն՝ այցելելով վեբ սերվերի IP հասցեն վեբ բրաուզերում: Վեբ զննարկիչում մուտքագրեք հետևյալը −
http://your_server_ip_address/
Եթե ամեն ինչ ճիշտ է կազմաձևված, դուք պետք է տեսնեք լռելյայն Nginx էջը:
Քայլ 6. Կարգավորեք Nginx-ը
Նախնական Nginx կազմաձևման ֆայլը գտնվում է /etc/nginx/nginx.conf հասցեում: Նախքան կազմաձևման ֆայլում որևէ փոփոխություն կատարելը, մենք պետք է կրկնօրինակենք այն՝ գործարկելով հետևյալ հրամանը −
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Այժմ, երբ մենք կատարել ենք կազմաձևման ֆայլի կրկնօրինակում, մենք կարող ենք խմբագրել բնօրինակ ֆայլը՝ օգտագործելով մեր ընտրած տեքստային խմբագրիչը: Այս օրինակում մենք կօգտագործենք նանո տեքստային խմբագրիչ -
sudo nano /etc/nginx/nginx.conf
Հիմնական Nginx կազմաձևման ֆայլը բաժանված է մի քանի բլոկների, այդ թվում՝ http, սերվերի և տեղադրության բլոկների: http բլոկը հիմնական կազմաձևման բլոկն է և պարունակում է վեբ սերվերի գլոբալ կարգավորումներ:
Կազմաձևման ֆայլում որևէ փոփոխություն կատարելուց հետո դուք պետք է ստուգեք կազմաձևման ֆայլը շարահյուսական սխալների համար՝ օգտագործելով հետևյալ հրամանը.
sudo nginx -t
Եթե շարահյուսական սխալներ չկան, կարող եք վերաբեռնել Nginx կոնֆիգուրացիան՝ օգտագործելով հետևյալ հրամանը -
sudo systemctl reload nginx
Քայլ 7. Կազմաձևեք վիրտուալ հոստերը
Nginx-ը մեզ թույլ է տալիս կարգավորել վիրտուալ հոսթերը, որոնք օգտագործվում են նույն սերվերի վրա տարբեր կայքեր կամ հավելվածներ սպասարկելու համար: Վիրտուալ հոսթ ստեղծելու համար մենք պետք է ստեղծենք սերվերի նոր բլոկ Nginx կոնֆիգուրացիայի ֆայլում:
Նախ, մենք պետք է ստեղծենք նոր կազմաձևման ֆայլ մեր վիրտուալ հոսթի համար −
sudo nano /etc/nginx/conf.d/example.com.conf
Այս ֆայլում մենք կարող ենք ավելացնել սերվերի բլոկ մեր վիրտուալ հոսթի համար, որը կպարունակի մեր կայքի կազմաձևման կարգավորումները: Օրինակ −
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
Այս օրինակում մենք կազմաձևում ենք վիրտուալ հոսթ վեբ կայքի համար՝ example.com տիրույթի անունով: արմատային դիրեկտիվը սահմանում է փաստաթղթի արմատային գրացուցակը կայքի համար, իսկ ինդեքսային հրահանգը նշում է լռելյայն ինդեքսային ֆայլը, որը պետք է սպասարկվի:
Տեղադրության բլոկը սահմանում է կոնֆիգուրացիայի կարգավորումներ այն հարցումների համար, որոնք համապատասխանում են կոնկրետ URL-ի կամ URL-ի օրինակին: Այս դեպքում մենք օգտագործում ենք try_files հրահանգը, որպեսզի փորձենք սպասարկել պահանջված ֆայլը կամ գրացուցակը, իսկ եթե այն գոյություն չունի, սպասարկեք index.html ֆայլը:
Մեր վիրտուալ հոսթի համար կոնֆիգուրացիա ավելացնելուց հետո մենք պետք է փորձարկենք կազմաձևման ֆայլը շարահյուսական սխալների համար.
sudo nginx -t
Եթե շարահյուսական սխալներ չկան, մենք կարող ենք վերաբեռնել Nginx կոնֆիգուրացիան՝ փոփոխությունները կիրառելու համար
sudo systemctl reload nginx
Քայլ 8. Միացնել HTTPS-ը SSL/TLS վկայագրերով
Մեր կայքը HTTPS-ով ապահովելու համար մենք պետք է ստանանք SSL/TLS վկայագիր վստահելի հավաստագրման մարմնից (CA): Մենք կարող ենք անվճար SSL/TLS վկայագիր ստանալ Let's Encrypt-ից՝ օգտագործելով Certbot գործիքը:
Նախ, մենք պետք է տեղադրենք Certbot գործիքը −
sudo yum install certbot python2-certbot-nginx
Հաջորդը, մենք կարող ենք գործարկել հետևյալ հրամանը՝ մեր վիրտուալ հոսթի համար SSL/TLS վկայական ստանալու և տեղադրելու համար
sudo certbot --nginx -d example.com
Այս հրամանը ավտոմատ կերպով վկայական կստանա Let's Encrypt-ից և կկարգավորի Nginx-ը, որպեսզի այն օգտագործի մեր վիրտուալ հոսթի համար:
Վկայագիր ստանալուց հետո մենք պետք է կարգավորենք Nginx-ը, որպեսզի վերաուղղորդենք HTTP-ի ամբողջ տրաֆիկը դեպի HTTPS: Մենք կարող ենք դա անել՝ ավելացնելով հետևյալ սերվերի բլոկը մեր վիրտուալ հոսթի կազմաձևում −
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
Այս սերվերի բլոկը կվերահղորդի HTTP-ի ողջ տրաֆիկը դեպի HTTPS՝ օգտագործելով 301 վերահղումը:
Քայլ 9. Միացնել Nginx-ը դեպի կիրառական սերվերների վստահված անձի հարցումները
Nginx-ը հաճախ օգտագործվում է որպես հակադարձ պրոքսի սերվեր՝ բազմաթիվ հավելվածների սերվերների վրա տրաֆիկը բաշխելու համար: Սա կարող է բարելավել վեբ հավելվածների կատարողականությունը և մասշտաբայնությունը:
Nginx-ին պրոքսի հարցումները հավելվածի սերվերներին միացնելու համար մենք պետք է ստեղծենք նոր սերվերի բլոկ Nginx կոնֆիգուրացիայի ֆայլում, որը սահմանում է վերին հոսքի սերվերները:
upstream app_servers {
server 10.0.0.1:8000;
server 10.0.0.2:8000;
}
Այս օրինակում մենք սահմանում ենք app_servers անունով վերին հոսքի խումբ, որը պարունակում է 10.0.0.1 և 10.0.0.2 IP հասցեներով երկու հավելվածի սերվերներ, որոնք լսում են 8000 նավահանգիստով:
Հաջորդը, մենք կարող ենք ավելացնել նոր սերվերի բլոկ մեր Nginx կազմաձևման ֆայլին, որը վստահված է հայցերը վերին հոսքի սերվերներին −
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://app_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
Այս օրինակում մենք կարգավորում ենք Nginx-ը որպես պրոքսի հարցումներ դեպի վերընթաց սերվերներ, որոնք սահմանված են app_servers խմբում: proxy_pass հրահանգը սահմանում է URL՝ հարցումները փոխանցելու համար, իսկ proxy_set_header հրահանգները լրացուցիչ վերնագրեր են ավելացնում փոխանցված հարցումներին:
Քայլ 10. Դիտեք Nginx-ը Systemd-ով
Systemd-ը Linux-ի համակարգի և ծառայությունների մենեջեր է, որը տրամադրում է մի շարք գործիքներ ծառայությունների կառավարման համար, ներառյալ Nginx-ը: Մենք կարող ենք օգտագործել systemd-ը Nginx ծառայությունը վերահսկելու և դրա կարգավիճակն ու տեղեկամատյանները դիտելու համար:
Nginx ծառայության կարգավիճակը դիտելու համար գործարկեք հետևյալ հրամանը -
sudo systemctl status nginx
Այս հրամանը ցույց կտա Nginx ծառայության ընթացիկ կարգավիճակը, ներառյալ՝ այն աշխատում է, թե ոչ, սխալներ կամ նախազգուշացումներ, ինչպես նաև վերջին անգամ սկսելուց կամ վերագործարկվելուց հետո:
Nginx ծառայության տեղեկամատյանները դիտելու համար գործարկեք հետևյալ հրամանը -
sudo journalctl -u nginx
Այս հրամանը ցույց կտա Nginx ծառայության տեղեկամատյանները, ներառյալ ցանկացած սխալ, նախազգուշացում կամ տեղեկատվական հաղորդագրություն:
Մենք կարող ենք նաև օգտագործել հետևյալ հրամանը՝ իրական ժամանակում հետևելու Nginx տեղեկամատյաններին −
sudo journalctl -u nginx -f
Այս հրամանը իրական ժամանակում կցուցադրի Nginx տեղեկամատյանները, երբ դրանք ստեղծվեն, ինչը թույլ է տալիս մեզ ավելի ուշադիր հետևել ծառայությանը:
Քայլ 11. Կարգավորեք Nginx-ը որպես բեռի հավասարակշռող
Nginx-ի ամենատարածված օգտագործումներից մեկը որպես բեռի հավասարակշռող միջոց է: Այս կազմաձևում Nginx-ը մուտքային հարցումները բաշխում է բազմաթիվ հետին սերվերների վրա՝ ապահովելով վեբ հավելվածների բարձր հասանելիություն և մասշտաբայնություն:
Nginx-ը որպես բեռի հավասարակշռող կարգավորելու համար մենք պետք է ստեղծենք վերին հոսքի խումբ, որը պարունակում է IP հասցեներ կամ հետնամասային սերվերների հոսթների անուններ.
upstream backend_servers {
server 10.0.0.1:8000;
server 10.0.0.2:8000;
}
Այս օրինակում մենք սահմանում ենք backend_servers անունով մի խումբ, որը պարունակում է երկու backend սերվերներ IP հասցեներով 10.0.0.1 և 10.0.0.2, որոնք լսում են 8000 նավահանգիստը:
Հաջորդը, մենք կարող ենք նոր սերվերի բլոկ ավելացնել մեր Nginx կազմաձևման ֆայլին, որը սահմանում է բեռի հավասարակշռման կոնֆիգուրացիան.
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# Load balancing configuration
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
# Load balancing algorithm
# Options: round-robin, least_conn, ip_hash
# Default: round-robin
proxy_set_header X-Nginx-Upstream-LB-Method least_conn;
}
}
Այս օրինակում մենք օգտագործում ենք proxy_pass հրահանգը՝ backend_servers խմբում սահմանված backend սերվերներին հարցումները փոխանցելու համար: Մենք նաև լրացուցիչ վերնագրեր ենք ավելացնում փոխանցված հարցումներին՝ օգտագործելով proxy_set_header հրահանգները:
Եզրակացություն
Nginx-ը հիանալի վեբ սերվեր է, որն առաջարկում է բարձր կատարողականություն, մասշտաբայնություն և ռեսուրսների ցածր օգտագործում: Այս հոդվածում մենք քննարկել ենք, թե ինչպես տեղադրել և կարգավորել Nginx-ը CentOS 7-ում: Վերոնշյալ քայլերով դուք պետք է կարողանաք ստեղծել հիմնական Nginx վեբ սերվեր և սկսել սպասարկել վեբ էջերը: