Ինչպե՞ս տեղադրել և կարգավորել 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 վեբ սերվեր և սկսել սպասարկել վեբ էջերը: