ოფიციალური სერვისი კობებისთვის NGinx-ის გამოყენებით. Nginx ბრძანებებს, რომ თქვენ ხართ პასუხისმგებელი Nginx კონფიგურაციის ფაილის ცოდნაზე

ერთ-ერთი ყველაზე პოპულარული ვებ სერვერი

Nginx ითვლის მის დიდ პოპულარობას ვებ პროქსი სერვერებს შორის მისი პროდუქტიულობის გამო. სერვერს ბევრი უპირატესობა აქვს, მაგრამ დამწყებთათვის მისი დაყენება ადვილი იქნება. ჩვენ გვსურს დაგეხმაროთ ფაილების, სინტაქსის გაგებაში და ასევე Nginx-ის ძირითადი პარამეტრების კონფიგურაციაში.

დირექტორიის იერარქია

სერვერის კონფიგურაციის ყველა ფაილი ინახება /etc/nginx დირექტორიაში. გარდა ამისა, არსებობს მთელი რიგი საქაღალდეები, რომლებიც განთავსებულია დირექტორიაში, ასევე მოდულური კონფიგურაციის ფაილი.

cd /etc/nginx
ls -F
conf.d/koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params საიტები-ჩართულია /

თუ თქვენ იყენებდით Apache-ს, გეცოდინებათ საიტების ჩართული და საიტებისთვის ხელმისაწვდომი დირექტორიები. ისინი მიუთითებენ საიტების კონფიგურაციაზე. შექმნილი ფაილები ინახება მუდმივ დირექტორიაში. საიტების ჩართული საქაღალდე საჭიროა მხოლოდ აქტიური საიტების კონფიგურაციის შესანახად. მათ დასაკავშირებლად საჭიროა სიმბოლური შეტყობინება საქაღალდეებს შორის. კონფიგურაციების შენახვა ასევე შესაძლებელია conf.d. ამ შემთხვევაში, როდესაც Nginx გაშვებულია, ფაილი .conf გაფართოებით წაიკითხება როგორც ახალი. კონფიგურაციის ფაილების დაწერისას აკრიფეთ კოდი შეცდომების გარეშე და შეასწორეთ სინტაქსი. ყველა სხვა ფაილი დაინსტალირებულია /etc/nginx-ში. კონფიგურატორი შეიცავს ინფორმაციას კონკრეტული პროცესების, ასევე დამატებითი კომპონენტების შესახებ.

ძირითადი Nginx კონფიგურაციის ფაილი არის nginx.conf.

ის კითხულობს ყველა კონფიგურაციის ფაილს, აერთიანებს მათ ერთში, როდესაც სერვერი იწყება. გახსენით ფაილი დახმარებისთვის:

სუდო ნანო /etc/nginx/nginx.conf

ეკრანზე გამოჩნდება შემდეგი რიგები:

მომხმარებლის www-data;
მუშა_პროცესები 4;
pid /var/run/nginx.pid;
ივენთი (
მუშა_კავშირები 768;
#Multi_accept on;
}
http(
. . .

პერშა - რამდენიმე ფარული ამბავი Nginx-ის შესახებ. ფრაზა user www-data მიუთითებს მომხმარებელს, რომელიც მართავს სერვერს. pid დირექტივა მიუთითებს, არის თუ არა შიდა ვიკისთვის მინიჭებული PID პროცესების გაუქმება. Worker_processes მწკრივი გვიჩვენებს რამდენი პროცესის ერთდროულად გაშვება Nginx-ს შეუძლია. გარდა ამისა, აქ შეგიძლიათ შეიყვანოთ ჟურნალები (მაგალითად, შეცდომების ჟურნალი ჩამოთვლილია error_log დირექტივის ფუნქციად). მოვლენების განყოფილება გაფართოებულია ქვემოთ. სერვერის კავშირის დასამუშავებლად საჭიროა VIN. ამის შემდეგ, http ბლოკი ხელახლა დაინსტალირდება.

Nginx კონფიგურაციის ფაილის სტრუქტურა

უფრო მარტივი ფაილის ფორმატირების სტრუქტურა დაგეხმარებათ უფრო მარტივად ნავიგაციაში ვებ სერვერის კონფიგურაციაში. იგი დაყოფილია სტრუქტურულ ბლოკებად. http ბლოკის კონფიგურაციის დეტალები იყოფა დონეებად დახურული ბლოკების გამოყენებით. ხელისუფლების დაღუპვის სუნი ბატკოვსკისგან, ვინც უნდა გაიზარდოს. ეს ბლოკი ინახავს სერვერის კონფიგურაციის უმეტეს ნაწილს. ისინი დაყოფილია სერვერის ბლოკებად, რომელთა შუაში არის სხვადასხვა ლოკაცია.

თუ თქვენ აყენებთ Nginx სერვერს, გახსოვდეთ, რომ რაც უფრო დაბალია კონფიგურაციის ბლოკი, მით უფრო ნაკლებ ელემენტებს დაზარალდება ძალა და საფრთხე. ყოფნის ფაილს აქვს უამრავი ვარიანტი, რომელსაც შეუძლია შეცვალოს სერვერის მოქმედება. თქვენ შეგიძლიათ დააყენოთ შეკუმშული ფაილები კლიენტისთვის გასაგზავნად, მაგალითად. ვისთვის დაწერეთ პარამეტრები:

gzip ჩართულია;
gzip_გამორთეთ "msie6";

გთხოვთ გაითვალისწინოთ, რომ ერთსა და იმავე პარამეტრს შეუძლია მიიღოს სხვადასხვა მნიშვნელობები სხვადასხვა ბლოკში. ჯერ დააყენეთ, შემდეგ ხელახლა აირჩიეთ პარამეტრი საჭიროებისამებრ. თუ არ მსურს მნიშვნელობის შეცვლა, პროგრამა დააყენებს მნიშვნელობებს ავტომატურ რეჟიმში.

nginx.conf ფაილში დარჩენილი რიგები არის:

მოიცავს /etc/nginx/conf.d/*.conf;
მოიცავს /etc/nginx/sites-enabled/*;

გთხოვთ გაითვალისწინოთ, რომ მდებარეობა და სერვერის ბლოკები შენახულია ამ ფაილში. თქვენ მიუთითებთ URL-ის და კონკრეტული ფაილების პარამეტრებს. ეს სტრუქტურა აუცილებელია მოდულური კონფიგურაციის სტრუქტურის მხარდასაჭერად. შუაში, შეგიძლიათ შექმნათ ახალი დირექტორიები და ფაილები სხვადასხვა საიტებისთვის. გარდა ამისა, შეგიძლიათ მსგავსი ფაილების დაჯგუფება. განხილვის შემდეგ, შეგიძლიათ დახუროთ nginx.conf ფაილი.

ვირტუალური ბლოკები

ისინი ანალოგიურია ვირტუალური მასპინძლების Apache-ში. სერვერის განყოფილებაში ბლოკები მოიცავს სხვა საიტების მახასიათებლებს, რომლებიც მუშაობს სერვერზე. sites-available საქაღალდეში ნახავთ ფაილს სერვერის ბლოკში, რომელიც პასუხისმგებელია გამოთვლებზე. იმავდროულად, შეგიძლიათ გაიგოთ საჭირო მონაცემები, რომლებიც შეიძლება დაგჭირდეთ საიტების მომსახურებისას.

CD საიტები-ხელმისაწვდომია
სუდო ნანო ნაგულისხმევი
სერვერი (
root/usr/share/nginx/www;
index index.html index.htm;
server_name localhost;
ადგილმდებარეობა/(
try_files $uri $uri //index.html;
}
მდებარეობა/დოკუმენტი/(
alias/usr/share/doc/;
ავტოინდექსი ჩართულია;
დაუშვით 127.0.0.1;
უარყოს ყველა;
}
}

კომენტარი კარგად იყო მოწესრიგებული ცნობილ კონდახზე. მთელი ნივთი იყოფა მარტივად გამოყენებისთვის. სერვერის ბლოკების შუაში ემატება პარამეტრები, რომლებიც განთავსებულია მშვილდის ფიგურასთან:

ეს ბლოკი მდებარეობს nginx.conf ფაილში ჩაწერილი http-ის ბოლოს დამატებითი ჩათვლით დირექტივის უკან. root დირექტივის შემდეგ, მითითებულია დირექტორია, სადაც შინაარსი გავრცელდება საიტზე. თქვენი პროგრამა მოძებნის ფაილებს, რომლებსაც კორესპონდენტი ითხოვს. დასაწყებად გზაა: /usr/share/nginx/www. Nginx აძლიერებს რიგებს და დირექტივებს ერთმანეთის მიყოლებით. თუ ნიშნების დადება არ შეგიძლიათ, ამდენი მწკრივი შეიძლება წაიკითხოთ როგორც ერთი. წესების დასაზუსტებლად, რომლებიც ჩართული იქნება ინდექსში, გამოიყენეთ ინდექსის დირექტივა. სერვერი შეამოწმებს მათ ხელახალი შემოწმების მიზნით. თუ თქვენ დაინტერესებული ხართ საჭირო გვერდებით, გთხოვთ, მიმართოთ index.html. თუ ეს ასე არ არის, მაშინ სერვერი დაყენდება index.htm.

სერვერის_სახელის წესი

ეს მოიცავს დომენის სახელების ჩამონათვალს, რომლებიც პასუხისმგებელნი იქნებიან სერვერის ბლოკის დამუშავებაზე. ისინი შეიძლება დაიწეროს რაც შეიძლება მეტი სივრცეებით გამოყოფილი. თუ დომენის ბოლოს ან დასაწყისში დააყენებთ *, შეგიძლიათ დადოთ სახელი ნიღბით. ვარსკვლავი მიუთითებს სახელის ნაწილებზე. თუ შეიყვანთ *.com.ua, მაშინ აქ განთავსდება დანიშნული დომენის ზონის ყველა მისამართი. თუ მისამართები ერგება რამდენიმე დირექტივის აღწერას, მაშინ ეს შეესაბამება მას, რომელიც ყველგან ჯდება. თუ არის რაიმე გაქცევა, პასუხი იქნება იმ პირზე, რომელსაც აქვს ნიღაბი. წინააღმდეგ შემთხვევაში, ტიპი მითითებული იქნება რეგულარული გამონათქვამებით. სერვერის სახელები ჩვეულებრივ ენებში იწყება ტილდით (~).

მდებარეობის ბლოკები

შემდეგი ნაბიჯი, ჩვენ გვექნება მდებარეობის ბლოკი. მომღერალი სასმელების დამუშავების მეთოდის დასადგენად საჭიროა VIN. თუ რესურსები არ შეესაბამება სხვა მდებარეობის ბლოკებს, მაშინ იარაღში მინიჭებული დირექტივები დაიდება მათ წინ. ეს ბლოკები შეიძლება შეიცავდეს ბილიკებს kshtalt /doc/-მდე. ურისა და მდებარეობას შორის ახალი ურთიერთობის დასამყარებლად, = ნიშანი დახურულია. სტოიკური ტილდის საშუალებით შეგიძლიათ დააყენოთ ტიპი რეგულარული გამონათქვამებით. თქვენ ასევე შეგიძლიათ დააყენოთ რეესტრის მგრძნობელობა ~-ის დაყენებით. თუ დაამატებთ ვარსკვლავს, რეგისტრი არანაირ როლს არ თამაშობს.

გთხოვთ, ფრთხილად იყოთ: თუ თქვენ იკითხავთ ისევე, როგორც მდებარეობის ბლოკს, დაბნეული იქნებით და თქვენი ძებნა დაბნეული იქნება. თუ არ არის მითითებული, URI ემთხვევა მდებარეობის დირექტივების პარამეტრებს. არჩეულია ^ ~ ბლოკი, რომელიც ემთხვევა არჩეული ბლოკის URI-ს. თუ ეს პარამეტრი არ არის ჩართული, სერვერი ირჩევს ოპტიმალურ გაქცევას და ასევე ეძებს ვიკის რეგულარული ვირუსები. ეს აუცილებელია ერთ-ერთი შესაბამისი შაბლონის შესარჩევად. როგორც კი სიმართლე გაირკვევა, გამოსწორდება. სხვა შემთხვევაში, ამ გზით, ის გაიჭედება URI-ს წინ. ამასთან, გაითვალისწინეთ, რომ Nginx-ს ყველა ტიპი უფრო უყვარს. რადგან არ არსებობს, თქვენ დაიწყებთ რეგულარული გამონათქვამების ძიებას, შემდეგ კი URI-ით. პარიტეტი განისაზღვრება სიმბოლოების კომბინაციით ^ ~.

try_files წესი

ეს არის ძალიან სასარგებლო ინსტრუმენტი, რომელიც შექმნილია ფაილების არსებობის დადგენილი წესით შესამოწმებლად. პირველი აკმაყოფილებს მოთხოვნის დამუშავების კრიტერიუმებს. თქვენ შეგიძლიათ გამოიყენოთ დამატებითი პარამეტრები, რათა მიუთითოთ, თუ როგორ უნდა მოხდეს სერვერის მომსახურება. კონფიგურატორს აქვს პარამეტრების შემდეგი რიგი:

try_files $uri $uri //index.html;

Ეს რას ნიშნავს? როდესაც მოიძებნება მოთხოვნა, რომელსაც ემსახურება მდებარეობის ბლოკი, სერვერი დაუყოვნებლივ შეეცდება uri-ს ფაილად გაანალიზებას. ამას $uri-ის ცვლილება უზრუნველყოფს. თუ არ არის ტიპები, ური მოეწყობა კატალოგივით. შეგიძლიათ გადაამოწმოთ თქვენი მნიშვნელობა დასასრულს ხაზების დამატებით: $ uri /. შეიძლება იყოს სიტუაციები, როდესაც არც ფაილი და არც დირექტორია არ არის ნაპოვნი. ამ სიტუაციაში, თქვენ უნდა გამოიყენოთ ფაილი მის უკან - index.html. try_files წესი ყინავს დარჩენილ პარამეტრს, როგორც სარეზერვო ოფციას. Ამიტომაც დანიის ფაილიდამნაშავეა სისტემაში ყოფნაში. თუმცა, თუ გაქცევა ვერ იქნა ნაპოვნი, ნგინქსმა პრობლემის მხარე შეცვალა. მის დასაყენებლად დაწერეთ = და შეცვალეთ კოდი:

დამატებითი პარამეტრები

თუ თქვენ დააყენებთ ალიასის წესს, შეგიძლიათ ემსახუროთ მდებარეობის ბლოკის გვერდებს და root დირექტორიას, მაგალითად. თუ ფაილები საჭიროა doc-დან, ისინი იკვებება /usr/share/doc/-დან. გარდა ამისა, autoindex on წესი იწყებს სერვერის დირექტორიას ჩამონათვალს მითითებული მდებარეობის დირექტივისთვის. თუ თქვენ შეიყვანთ სტრიქონების უარყოფას და დაშვებას, თქვენ შეძლებთ შეცვალოთ წვდომა დირექტორიებზე.

Yak visnovok varto ამბობენ, რომ Nginx კიდევ უფრო მკაცრია უხვად ფუნქციონალური ინსტრუმენტი. თქვენი მუშაობის პრინციპის გასაგებად, ამას დრო და ძალისხმევა დასჭირდება. როგორც კი გაიგებთ რობოტის კონფიგურაციას, თქვენ შეძლებთ ისარგებლოთ პროგრამების შესაძლებლობებით დანარჩენ მსოფლიოში.

N ginx მოიხსენიება, როგორც "ძრავი x" - იაფი, მაღალი ხარისხის HTTP და კარიბჭის მარიონეტული სერვერი, რომელიც პასუხისმგებელია ინტერნეტში ზოგიერთი უმსხვილესი საიტის ჩართვაზე. ის შეიძლება გამოყენებულ იქნას როგორც დამოუკიდებელი ვებ სერვერი და როგორც კარიბჭე პროქსი სერვერი Apache-სთვის და სხვა ვებ სერვერებისთვის.

როგორც დეველოპერი ან სისტემის ადმინისტრატორი, რომელმაც ყველაფერი იცის, თქვენ რეგულარულად მუშაობთ Nginx-თან.

ეს სტატია განიხილავს ყველაზე მნიშვნელოვან და ხშირად გამოყენებულ Nginx ბრძანებებს, მათ შორის Nginx გაშვებას, გაშვებას და გადატვირთვას.

Persh nіzh თქვენ პატივს მიაგებთ

ყველა ბრძანება უნდა იყოს შეყვანილი სახელის ან root-ის ქვეშ და უნდა იყოს გამოყენებული ნებისმიერ მიმდინარე Linux დისტრიბუციაში, როგორიცაა CentOS 7 და Debian 9.

დაიწყე Nginx

Nginx-ის გაშვება მარტივია. უბრალოდ გაუშვით შემდეგი ბრძანება:

Sudo systemctl start nginx

წარმატების შემდეგ, გუნდი ვერ ხედავს შედეგს.

თუ თქვენ იყენებთ Linux დისტრიბუციას systemd-ის გარეშე Nginx ტიპის გასაშვებად:

Sudo სერვისის დაწყება nginx

იმის ნაცვლად, რომ ხელით დაიწყოთ Nginx სერვისი, რეკომენდებულია მისი კონფიგურაცია, რათა დაიწყოს სისტემა დაბლოკილი:

Sudo systemctl ჩართეთ nginx

ზუპინიტი ნგინგი

Stop Nginx სწრაფად შეაჩერებს ყველა Nginx-ის მუშა პროცესს, თუ კავშირი ჩართულია.

Nginx-ის დასაწყებად, wiki ერთ-ერთი შემდეგი ბრძანება:

Sudo systemctl stop nginx sudo service stop nginx

გადატვირთეთ Nginx

გადატვირთვის პარამეტრი არის Nginx სერვერის ჩატვირთვისა და გაშვების სწრაფი გზა.

Vikorize ერთ-ერთი შემდეგი ბრძანება Nginx-ის გადატვირთვისთვის:

Sudo systemctl გადატვირთეთ nginx sudo სერვისი გადატვირთეთ nginx

ეს გუნდი ის ადგილია, სადაც უდავოდ ყველაზე ხშირად იქნებით გამარჯვებული.

გადატვირთეთ Nginx

თქვენ დაუყოვნებლივ უნდა გადატვირთოთ Nginx, თუ შეცვლით მის კონფიგურაციას.

გადატვირთვის ვარიანტია ახალი კონფიგურაციის დაყენება, ახალი სამუშაო პროცესების გაშვება ახალი კონფიგურაციით და ძველი სამუშაო პროცესების სწორად შეწყვეტა.

Nginx-ის გადატვირთვისთვის, შეასრულეთ შემდეგი ბრძანებებიდან ერთ-ერთი:

Sudo systemctl გადატვირთეთ nginx sudo სერვისი გადატვირთეთ nginx

Nginx კონფიგურაციის ტესტირება

როდესაც თქვენ განახორციელებთ ცვლილებებს Nginx სერვერის კონფიგურაციის ფაილში, რეკომენდირებულია შეამოწმოთ კონფიგურაცია სერვისის გადატვირთვამდე ან გადატვირთვამდე.

გამოიყენეთ ეს ბრძანება თქვენი Nginx კონფიგურაციის შესამოწმებლად სინტაქსური ან სისტემური შეცდომისთვის:

სუდო ნგინქს -ტ

ვისნოვოკი ასე გამოიყურება.

Nginx: კონფიგურაციის ფაილი /etc/nginx/nginx.conf სინტაქსი ნორმალურია nginx: კონფიგურაციის ფაილი /etc/nginx/nginx.conf ტესტი წარმატებულია

თუ რაიმე შეწყალება იქნება, გუნდი ზედამხედველობას გაუწევს ანგარიშს.

Marvel at Nginx სტატუსი

Nginx სერვისის მდგომარეობის შესამოწმებლად გამოიყენეთ შემდეგი ბრძანება:

Sudo systemctl სტატუსი nginx

სიმბოლო ასე გამოიყურება:

* Nginx.service - nginx - მაღალი ხარისხის ვებ სერვერი ჩატვირთულია: ჩატვირთულია (/lib/systemd/system/nginx.service; ჩართულია; გამყიდველის წინასწარ დაყენებული: ჩართულია) Drop-In: /etc/systemd/system/nginx.service.d ` -nofile.conf აქტიური: აქტიური (გაშვებულია) ორშაბათიდან 2019-04-22 10:21:22 MSK; 10 საათის წინ Docs: http://nginx.org/en/docs/ პროცესი: 1113 ExecStart = /usr/sbin/nginx -c /etc/nginx/nginx.conf (კოდი = გასულია, სტატუსი = 0 / SUCCESS) მთავარი PID : 1183 (nginx) ამოცანები: 4 მეხსიერება: 63.1M CPU: 3წთ 31.529s CGroup: /system.slice/nginx.service | -1183 nginx: სამაგისტრო პროცესი /usr/sbin/nginx -c /etc/nginx/nginx.con | -1184 nginx: მუშა პროცესი | -1185 nginx: მუშა პროცესი ` -1186 nginx: მუშა პროცესი

შეცვალეთ Nginx ვერსია

ზოგჯერ შეიძლება დაგჭირდეთ თქვენი Nginx-ის ვერსიის ცოდნა, რათა შეძლოთ პრობლემის გადაჭრა ან დაადგინოთ არის თუ არა სიმღერის ფუნქცია.

თქვენ შეგიძლიათ შეამოწმოთ თქვენი Nginx ვერსია გაშვებით:

Sudo nginx -v nginx ვერსია: nginx/1.14.0 (Ubuntu)

ვარიანტი -V ერთდროულად აჩვენებს Nginx ვერსიას შესაძლო კონფიგურაციის საფუძველზე.

სუდო ნგინქსი -V

ვისნოვოკი

ამ სტატიაში ჩვენ გაჩვენეთ Nginx-ის ყველაზე მნიშვნელოვანი ბრძანებების მოქმედებები. თუ გსურთ გაიგოთ მეტი Nginx ბრძანების ხაზის შესახებ, შეამოწმეთ Nginx დოკუმენტაცია

Nginx არის პოპულარული და პროდუქტიული ვებ სერვერი და კარიბჭე პროქსი სერვერი.

Nginx-ს ბევრი უპირატესობა აქვს, მისი მორგების წყალობით მარტივი გამოსაყენებელია და არ დაიკარგება დამწყებთათვის. ეს სახელმძღვანელო დაგეხმარებათ გაიგოთ Nginx-ის ძირითადი პარამეტრები, სინტაქსი და ფაილები.

შენიშვნა: Kerivnitstvo დაინსტალირებულია Ubuntu 12.04-ზე.

Nginx დირექტორია იერარქია

Nginx ინახავს კონფიგურაციის ფაილებს /etc/nginx დირექტორიაში.

ეს დირექტორია შეიცავს კიდევ რამდენიმე დირექტორიას და მოდულურ კონფიგურაციის ფაილს.

cd /etc/nginx
ls -F

conf.d/koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params საიტები-ჩართულია /

Apache-ს მომხმარებლები უკვე იცნობენ საიტების ხელმისაწვდომი და საიტების ჩართული დირექტორიების შესახებ. ეს დირექტორიები მიუთითებს საიტების კონფიგურაციაზე. ფაილები იქმნება და ინახება საიტებში-ხელმისაწვდომი; საიტებზე ჩართულია მხოლოდ ჩართული საიტების კონფიგურაციები შენახული. ამ მიზნით აუცილებელია სიმბოლური ცვლილება საიტებიდან ხელმისაწვდომი საიტებიდან ჩართულ საიტებზე.

conf.d დირექტორია ასევე შეიძლება შეიცვალოს კონფიგურაციების შესანახად. ფაილი .conf გაფართოებით წაიკითხება Nginx-ის დაწყებისას. ასეთი ფაილების სინტაქსი არ არის დამნაშავე.

ქვემოთ მოცემულია ყველა ფაილი, რომელიც შენახულია / etc / nginx-ში, რომელიც შეიცავს ინფორმაციას კონკრეტული პროცესების კონფიგურაციისა და დამატებითი კომპონენტების შესახებ.

ძირითადი Nginx კონფიგურაციის ფაილი არის nginx.conf.

nginx.conf ფაილი

nginx.conf ფაილი კითხულობს სხვადასხვა კონფიგურაციის ფაილებს და აერთიანებს მათ ერთ კონფიგურაციის ფაილში სერვერის დაწყებისას.

გახსენით ფაილი:

სუდო ნანო /etc/nginx/nginx.conf

მომხმარებლის www-data;
მუშა_პროცესები 4;
pid /var/run/nginx.pid;
ივენთი (
მუშა_კავშირები 768;
#Multi_accept on;
}
http(
. . .

პირველი რიგები გვაწვდის ფარულ ინფორმაციას Nginx-ის შესახებ. მომხმარებლის www-data row განსაზღვრავს სერვერს და სერვერის გაშვება შემდეგ ხდება.

pid დირექტივა განსაზღვრავს სად შეინახება პროცესის PID-ები შიდა ვიკისთვის. მუშათა_პროცესების მწკრივი მიუთითებს იმ პროცესების რაოდენობაზე, რომლებიც შეიძლება ერთდროულად იყოს Nginx-ის მიერ მხარდაჭერილი.

ასევე ფაილის ამ ნაწილში შეგიძლიათ შეიყვანოთ ჟურნალები (მაგალითად, შეცდომების ჟურნალი იწერება error_log დირექტივის გამოყენებით).

სერვერის შესახებ ფარული ინფორმაციისთვის მიჰყევით მოვლენების განყოფილებას. ის ამუშავებს Nginx-ის კონფიგურაციას. მოჰყვება http ბლოკი. სანამ გააგრძელებთ ვებ სერვერის კონფიგურაციის გაცნობას, უნდა გესმოდეთ, თუ როგორ უნდა დააფორმოთ Nginx კონფიგურაციის ფაილი.

Nginx კონფიგურაციის ფაილის სტრუქტურა

Nginx კონფიგურაციის ფაილი დაყოფილია ბლოკებად.

პირველი ბლოკი არის მოვლენები, რასაც მოჰყვება http და იწყება კონფიგურაციების ძირითადი იერარქია.

http ბლოკის კონფიგურაციის დეტალები თანაბრად იყოფა დახურულ ბლოკებად, რაც ამცირებს ენერგიას იმ ბლოკიდან, რომელშიც ისინი ამოღებულია. http ბლოკი ინახავს Nginx-ის ძირითადი კონფიგურაციების დიდ ნაწილს, რომლებიც იყოფა სერვერის ბლოკებად, რომლებიც, თავის მხრივ, იყოფა მდებარეობის ბლოკებად.

Nginx-ის დაყენებისას მნიშვნელოვანია გახსოვდეთ შემდეგი წესი: რაც უფრო მაღალია კონფიგურაციის დონე, მით მეტი ბლოკია ამ კონფიგურაციაში; რაც უფრო დაბალია კონფიგურაცია, მით უფრო ინდივიდუალურია. თუ X პარამეტრი შეიძლება დარჩეს სერვერის ბლოკში, მაშინ ასეთი პარამეტრი უნდა განთავსდეს http ბლოკში.

მას შემდეგ რაც კარგად დააკვირდებით ფაილს, შეამჩნევთ, რომ არსებობს უამრავი ვარიანტი, რათა გააკონტროლონ, თუ როგორ იქცევიან პროგრამები მთლიანობაში.

მაგალითად, ფაილის შეკუმშვის გადასაჭრელად, თქვენ უნდა დააყენოთ შემდეგი პარამეტრები:

gzip ჩართულია;
gzip_გამორთეთ "msie6";

თქვენ უნდა ჩართოთ gzip მხარდაჭერა კლიენტისთვის გაგზავნილი მონაცემების შეზღუდვისთვის და ჩართოთ gzip to Internet Explorer 6 (ამ ბრაუზერს არ აქვს მონაცემთა შეკუმშვის მხარდაჭერა).

შესაძლებელია, რომ რაღაც პარამეტრი დედის ბრალი იყოს? სხვადასხვა ღირებულებებირამდენიმე სერვერის ბლოკში, მაშინ ამ პარამეტრის დაყენება შესაძლებელია დიდი თანაბარი, და შემდეგ ხელახლა დააფასეთ იგი თავად სერვერის ბლოკების შუაში. შედეგად, Nginx შლის ქვედა დონის პარამეტრს.

ეს კონფიგურაცია იმავე დონეზე გამორიცხავს მრავალი იდენტური ფაილის შენახვის აუცილებლობას. გარდა ამისა, თუ დაგავიწყდათ პარამეტრების არჩევა ქვედა დონე Nginx უბრალოდ აკონფიგურირებს პარამეტრებს.

http ბლოკი nginx.conf ფაილში ასე მთავრდება:

მოიცავს /etc/nginx/conf.d/*.conf;
მოიცავს /etc/nginx/sites-enabled/*;

ეს ნიშნავს, რომ სერვერი და მდებარეობის ბლოკები, რომლებიც მიუთითებენ კონკრეტული საიტების პარამეტრებსა და URL-ზე, შეინახება ამ ფაილში.

ეს საშუალებას გაძლევთ მხარი დაუჭიროთ მოდულური კონფიგურაციის არქიტექტურას, რომელშიც შეგიძლიათ შექმნათ ახალი ფაილები ახალი საიტების მოსამსახურებლად. ის ასევე საშუალებას გაძლევთ დააჯგუფოთ მსგავსი ფაილები.

დახურეთ nginx.conf ფაილი. ახლა თქვენ უნდა შეცვალოთ სხვა საიტების პარამეტრები.

Nginx ვირტუალური ბლოკები

სერვერის ბლოკები Nginx-ში ანალოგიურია Apache-ს ვირტუალური მასპინძლების (ასევე უწოდებენ ვირტუალურ მასპინძლებს სიცხადისთვის). არსებითად, სერვერის ბლოკებია ტექნიკური მახასიათებლებირამდენიმე ვებსაიტი განთავსებულია ერთ სერვერზე.

საიტებზე ხელმისაწვდომი კატალოგში შეგიძლიათ იპოვოთ ფაილი სერვერის ბლოკისთვის, რომელიც მოწოდებულია სერვერთან ერთად. ეს ფაილი შეიცავს ყველა საჭირო მონაცემს საიტის შესანარჩუნებლად.

CD საიტები-ხელმისაწვდომია
სუდო ნანო ნაგულისხმევი

root/usr/share/nginx/www;
index index.html index.htm;
server_name localhost;
ადგილმდებარეობა/(

}
მდებარეობა/დოკუმენტი/(

alias/usr/share/doc/;
ავტოინდექსი ჩართულია;
დაუშვით 127.0.0.1;
უარყოს ყველა;

ფაილი შეიცავს ძალიან კარგ კომენტარებს, მაგრამ დანართში კომენტარები გამოტოვებულია სიმარტივისა და წაკითხვისთვის.

სერვერის ბლოკი მოიცავს ყველა კორექტირებას, რომელიც მოთავსებულია ხვეულ მკლავებს შორის:

სერვერი (
. . .
}

განლაგების ეს ბლოკი nginx.conf ფაილში ახლოსაა http ბლოკის დასასრულთან დამატებითი ჩათვლით დირექტივით.

root დირექტივა განსაზღვრავს დირექტორიას, რომელშიც შეინახება საიტის შინაარსი. ამ კატალოგში Nginx მოძებნის საჭირო ფაილებს. ინსტალაციისთვის ეს დირექტორია არის /usr/share/nginx/www.

აღადგინეთ პატივისცემა: ყველა მწკრივი დასრულდება წერტილოვანი ხაზით. ასე აძლიერებს Nginx ერთ დირექტივას მეორეზე. სინამდვილეში, Nginx წაიკითხავს ორ დირექტივას (ან რამდენიმე დირექტივას) როგორც ერთ დირექტივას დამატებითი არგუმენტებით.

ინდექსის დირექტივა განსაზღვრავს ფაილებს, რომლებიც ჩამოთვლილი იქნება ინდექსში. ვებ სერვერი შეამოწმებს ფაილებს მათი აღდგენის თანმიმდევრობით. თუ იგივე მხარე არ იყო მოთხოვნილი, სერვერის ბლოკი იპოვის და დააბრუნებს index.html ფაილს. თუ იგი ვერ პოულობს მთელ ფაილს, ის შეეცდება დაამუშავოს index.htm.

სერვერის_სახელის დირექტივა

სერვერის_სახელის დირექტივა შეიცავს დომენის სახელების სიას, რომლებსაც მოემსახურება ეს სერვერის ბლოკი. დომენების რაოდენობა არ არის გაზიარებული; კვალი სიაში დომენები გამოყოფილია სივრცეებით.

ვარსკვლავის სიმბოლო (*) დომენის დასაწყისში ან ბოლოს მიუთითებს სახელს ნიღბით, სადაც ვარსკვლავი წარმოადგენს სახელის ნაწილებს (ან რამდენიმე ნაწილს). მაგალითად, სახელები *.example.com მსგავსი იქნება სახელების forum.example.com და www.animals.example.com.

ვინაიდან URL-ის მოთხოვნა შეესაბამება სერვერის_სახელის რამდენიმე დირექტივას, ეს უპირველეს ყოვლისა იგივეა, რაც მთლიანად თავიდან აცილებულია.

თუ მისამართები არ აჩვენებს რაიმე გაქცევას, თქვენ მოგიწევთ მოძებნოთ ნაპოვნი სახელები ნიღბით, რომელიც დასრულდება ვარსკვლავით. თუ თქვენ არ იცით ასეთი სახელი, თქვენ ალბათ თავიდან აიცილებთ რეგულარულ გამონათქვამებს.

სერვერის სახელები ჩვეულებრივ ენებში იწყება ტილდით (~). სამწუხაროდ, ეს თემა სცილდება ამ სტატიის ფარგლებს.

მდებარეობის ბლოკები

მდებარეობა / სტრიქონი მიუთითებს, რომ მკლავებში არსებული დირექტივები იქნება მიმაგრებული ყველა რესურსზე, რომელიც არ შეესაბამება სხვა მდებარეობის ბლოკებს.

ასეთ ბლოკებს შეუძლიათ განათავსონ ური ბილიკები (მაგალითად /doc/). მდებარეობასა და ურს შორის იდენტურობის აღდგენისთვის გამოიყენეთ = სიმბოლო. სიმბოლო ~ ამყარებს ურთიერთობას რეგულარულ გამონათქვამებთან.

ტილდი რთავს რეგისტრის მგრძნობიარე რეჟიმს, ხოლო ტილდი ვარსკვლავით რთავს რეჟიმს.

თუ მოთხოვნა ემთხვევა მდებარეობის ბლოკს, მაშინ სერვერი უარყოფს ძიებას და ამტკიცებს ბლოკს. თუ სერვერმა არ იცის ზუსტი მდებარეობის ბლოკი, ის შეესაბამება URI-ს მდებარეობის დირექტივების პარამეტრებთან. Nginx ირჩევს ბლოკს, რომელშიც სიმბოლოები ^ ~ და რომლებიც ამოღებულია URI-დან გაერთიანებულია.

ვინაიდან ^ ~ ვარიანტი არ არის არჩეული, Nginx ირჩევს უახლოეს ვარიანტს და წყვეტს რეგულარული ვირუსების ძიებას, რათა შეეცადოს აირჩიოს ერთ-ერთი ხელმისაწვდომი შაბლონი. თუ იცნობთ ასეთ ვისლოუს, მაშინ იპოვით ვიკორისტ იოგოს. ვინაიდან ასეთი ვირუსი არ არსებობს, ვიკორისტის სერვერი ნაპოვნია მანამ, სანამ URI გაქცევა მოხდება.

ამ შემთხვევაში, გაითვალისწინეთ, რომ Nginx ზუსტად იგივე იქნება. ვინაიდან ასეთი მსგავსება არ არსებობს, ჩვეულებრივი ვირუსი ეძებს და შემდეგ ეძებს URI-ს მიხედვით. URI-ით ძიების პრიორიტეტის შესაცვლელად აირჩიეთ სიმბოლოების კომბინაცია ^ ~.

try_files დირექტივა

try_files დირექტივა არის სასარგებლო ინსტრუმენტი, რომელიც ამოწმებს ფაილების არსებობას მოცემული თანმიმდევრობით და ირჩევს პირველ ნაპოვნი ფაილს მოთხოვნის დასამუშავებლად.

ეს საშუალებას გაძლევთ მიიღოთ დახმარება დამატებითი პარამეტრებიეს ნიშნავს, თუ როგორ ემსახურება Nginx.

კონფიგურაციის ფაილს აქვს შემდეგი სტრიქონი:

try_files $uri $uri //index.html;

ეს ნიშნავს, რომ როდესაც მოგეთხოვებათ მოემსახუროს მდებარეობის ბლოკს, Nginx დაუყოვნებლივ შეეცდება uri-ს ფაილად მომსახურეობა (ეს ქცევა დაყენებულია $uri ცვლილებით).

თუ სერვერი ვერ აღმოაჩენს $uri-ს მნიშვნელობას, ის შეეცდება დაემთხვას uri-ს, როგორც დირექტორიას.

ბოლოში ხაზის შემდეგ, სერვერი ამოწმებს დირექტორიაში არსებულ შიგთავსს, მაგალითად, $uri/.

თუ ფაილი ან დირექტორია ვერ მოიძებნა, Nginx ქმნის ფაილს წესების მიხედვით (ამ შემთხვევაში, index.html სერვერის ბლოკის root დირექტორიაში). try_files დირექტივა იყენებს დარჩენილ პარამეტრს, როგორც სარეზერვო ოფციას, რომელიც არის ფაილი, რომელიც პასუხისმგებელია სისტემაში ყოფნაზე.

თუ ვებ სერვერი არ აღმოაჩენს შეცდომებს წინა პარამეტრებში, შეგიძლიათ შეცვალოთ კორექტირების მხარე. რისთვისაც ნიშანი ერთია და გამოიყენება შეწყალების კოდი.

მაგალითად, თუ მდებარეობა/ბლოკი ვერ პოულობს რესურსის მოთხოვნას, index.html ფაილის ნაცვლად, შეგიძლიათ ჩართოთ 404 გაფრთხილება:

try_files $uri $uri / = 404;

ამისათვის თქვენ უნდა დააყენოთ ნდობის ნიშანი და დააყენოთ გადახდის კოდი დარჩენილი პარამეტრის ველში (= 404).

დამატებითი პარამეტრები

ალიას დირექტივა საშუალებას აძლევს Nginx-ს, მოემსახუროს გვერდებს მოცემული დირექტორიაში მდებარეობის ბლოკში (მაგალითად, root-ის პოზიცია).

მაგალითად, /doc/-ზე ატვირთული ფაილები მოემსახურება /usr/share/doc/-დან.

დირექტივის ავტოინდექსი საშუალებას გაძლევთ ჩართოთ Nginx დირექტორიას სია მოცემული მდებარეობის დირექტივისთვის.

სტრიქონების დაშვება და უარყოფა აკონტროლებს წვდომას დირექტორიებზე.

ვისნოვოკი

Nginx ვებ სერვერი არის უხვად ფუნქციონალური და ძალიან პროდუქტიული, მაგრამ მისი ტერმინოლოგია და პარამეტრები შეიძლება დამაბნეველი იყოს.

მას შემდეგ რაც გაიგებთ Nginx-ის კონფიგურაციებს და დაიწყებთ მათთან მუშაობას, თქვენ უარს იტყვით ამ მძიმე და მსუბუქი ხელსაწყოს ყველა სარგებელს.

ტეგები:,

Nginx ვებ სერვერი არის ერთ-ერთი ყველაზე პოპულარული ვებ სერვერი ძალიან მაღალი პროდუქტიულობით და კლიენტებისთვის სტატიკური მოთხოვნების სწრაფი დამუშავებით. სათანადო კონფიგურაციით, თქვენ შეგიძლიათ მიაღწიოთ კიდევ უფრო მაღალ პროდუქტიულობას თქვენი ვებ სერვერიდან. Nginx-ს შეუძლია სტატიკური ფაილების მართვა ძალიან კარგად, იქნება ეს html გვერდებიან სხვა სახის რესურსები.

ერთ-ერთ წინა სტატიაში ჩვენ უკვე განვიხილეთ რამდენიმე ძირითადი პარამეტრის დაყენება, ამ სტატიაში მე მსურს მეტი ყურადღება გავამახვილო ვებ სერვერის პროდუქტიულობასა და მომზადებაზე, სანამ ის სამხედრო გონებაში გაჩნდება. რა აურზაურია? Linux დისტრიბუცია, შემდეგ დღეს ჩვენ გადავხედავთ CentOS-ს, ეს სისტემა ხშირად ტესტირება ხდება სერვერებზე და Nginx-ის დაყენებით, აქ შეიძლება წარმოიშვას გარკვეული შეუსაბამობები. შემდეგ ჩვენ გადავხედავთ Nginx CentOS-ის დაყენებას, მოდით ვისაუბროთ იმაზე, თუ როგორ უნდა ხელახლა ჩართოთ http2 მხარდაჭერა, google pagespeed და შეცვალოთ ძირითადი კონფიგურაციის ფაილი.

CentOS-ის და Nginx-ისა და Win-ის ოფიციალურ საცავებში შეგიძლიათ ნახოთ ყველაფერი უკვე დაინსტალირებული თქვენს სისტემაში. ჩვენ ასევე გვსურს, რომ საიტმა იმუშაოს http2 პროტოკოლით, რომელიც საშუალებას აძლევს ყველა მონაცემს გადაიტანოს ერთ კავშირზე, რაც გამოიწვევს უფრო მეტ პროდუქტიულობას. http2-ზე მუშაობისთვის, თქვენ უნდა დააყენოთ SSL სერთიფიკატი, მაგრამ ამის შესახებ უკვე წერია Lets Encrypt Nginx სერთიფიკატის სტატისტიკაში. ეს ყველაფერი არ არის. ორიგინალური SSL-დან HTTP2.0-ზე გადასართავად, ბრაუზერების უმეტესობა ამჟამად იყენებს ALPN პროტოკოლს და ისინი მხარდაჭერილია OpenSSL 1.02-დან დაწყებული. ეს იმიტომ, რომ მხოლოდ OpenSSL 1.01 არის საცავებში. ამიტომ, ჩვენ უნდა დავაყენოთ Nginx-ის ვერსია, რომელიც შედგენილია OpenSSL 1.02-დან. ამისათვის შეგიძლიათ გამოიყენოთ Broken Repo:

sudo yum -y დააინსტალირე yum-utils
# Sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

თუ იყენებთ EPEL საცავს, უნდა მიუთითოთ, რომ Nginx ძმა არ არის საჭირო:

sudo yum-config-manager --save --setopt = epel.exclude = nginx *;

ახლა Nginx-ის სწორი ვერსიის დასაყენებლად, ჩაწერეთ:

sudo yum დააინსტალირე nginx

Nginx 1.13.2-ის დარჩენილი ვერსია დაინსტალირებული იქნება ALPN-ის მუდმივი მხარდაჭერით. ახლა მოდით გადავიდეთ კორექტირებაზე.

2. Nginx-ის დაყენება

ჯერ მოდით შევხედოთ კონფიგურაციის ფაილის სტრუქტურას. ერთი შეხედვით, აქ შეიძლება ყველა ძალიან დაბნეული ვიყოთ, მაგრამ იქ ყველაფერი ლოგიკური იქნებოდა:

გლობალური პარამეტრები
ივენთი()
http(
სერვერი (
მდებარეობა ()
}
სერვერი ()
}

პირველ რიგში, გადადით გლობალურ ოფციებზე, სადაც მითითებულია პროგრამის ძირითადი პარამეტრები, მაგალითად, რა ტიპის კომპიუტერი იქნება გაშვებული და პროცესების რაოდენობა. შემდეგი განყოფილება ივენთიეს აღწერს, თუ როგორ უპასუხებს Nginx შეყვანის კავშირებს, შემდეგ არის განყოფილება http, ასე არის ყველაფერი სრულად კონფიგურირებული http პროტოკოლზე. მას აქვს განყოფილება სერვერი, ეს განყოფილება იგივე დომენის წარმომადგენელია, სერვერის განყოფილებაში არის განყოფილება მდებარეობაყველამ იცის, რომ თავად URL ითხოვება, მნიშვნელოვანია გვახსოვდეს, რომ ეს არის არა ფაილი სერვერზე, როგორც Apache-ში, არამედ თავად URL.

ძირითადი გლობალური პარამეტრები განხორციელდება /etc/nginx/nginx.conf ფაილში. შემდეგი, ჩვენ გადავხედავთ, თუ რას შევცვლით და რა მნიშვნელობებია საჭირო. მოდით ვისაუბროთ გლობალურ ვარიანტებზე:

  • მომხმარებელი- სერვერი, იმისდა მიხედვით, თუ რომელი სერვერის დასახელებაა გაშვებული, უნდა იყოს საიტის ფაილების კატალოგის მფლობელი და რომლის სახელზეც აუცილებელია php-fpm გაშვება;
  • მუშა_პროცესები- Nginx პროცესების რაოდენობა, რომლებიც ამოქმედდება, უნდა დაინსტალირდეს თქვენი ბირთვების რაოდენობის ტოლი, მაგალითად, მე მაქვს 4;
  • worker_cpu_affinity- ეს პარამეტრი საშუალებას გაძლევთ მიამაგროთ კანის პროცესი კონკრეტულ პროცესორის ბირთვზე, დააყენოთ მნიშვნელობა ავტო-ზე, რათა თავად პროგრამამ შეარჩიოს რა და როგორ მიამაგროს იგი;
  • worker_rlimit_nofile- ფაილების მაქსიმალური რაოდენობა, რომელიც შეიძლება გაიხსნას პროგრამის მიერ, თითოეული კავშირი მოითხოვს მინიმუმ ორ ფაილს და თითოეული პროცესი მითითებული იქნება თქვენი კავშირების რაოდენობის მიხედვით, ასე რომ, ფორმულა ასეთია: მუშა_პროცესები * მუშა_კავშირები * 2, პარამეტრი მუშა_კავშირებიცოტ-ცოტა გამოვყოთ;
  • pcre_jit- ჩართეთ ეს პარამეტრი რეგულარული გამონათქვამების დამუშავების დასაჩქარებლად დამატებითი JIT კომპილაციის გამოყენებით;

მოვლენების განყოფილებაში შეგიძლიათ ორი პარამეტრის კონფიგურაცია:

  • მუშა_კავშირები- ერთი პროცესისთვის კავშირების რაოდენობა შეიძლება საკმარისი იყოს შეყვანის კავშირების დასამუშავებლად. უპირველეს ყოვლისა, ჩვენ უნდა ვიცოდეთ ამ შეყვანის კავშირებიდან რამდენია მიღებული, რისთვისაც ჩანს IP_server მისამართის / nginx_status-ის მიღმა არსებული სტატისტიკა. როგორ ჩართოთ ის, მოდით შევხედოთ ქვემოთ. აქტიური კავშირების რიგს აქვს სერვერთან აქტიური კავშირების დიდი რაოდენობა და თქვენ ასევე უნდა დარწმუნდეთ, რომ php-fpm კავშირები ასევე დაცულია. შემდეგ დააწკაპუნეთ მიღებულ და დამუშავებულ ველებზე, ჯერ დასრულებული კავშირების ჩვენება და შემდეგ მიღებული კავშირების რაოდენობა. დანაშაულის მნიშვნელობა იგივე რჩება. თუ ისინი იშლება, ეს ნიშნავს, რომ კავშირი არ ხდება. გიკვირს კონდახი, პირველი სურათი პრობლემაა, მეორე წესრიგი. ჩემი ოპტიმალური კონფიგურაციისთვის, ფიგურა შეიძლება იყოს 200 კავშირი (სულ 800, 4 პროცესის საფუძველზე):

  • multi_accept- საშუალებას აძლევს პროგრამას მიიღოს რამდენიმე კავშირი ერთდროულად, რაც ასევე აჩქარებს მუშაობას, კავშირების დიდი რაოდენობით;
  • accept_mutex- დააყენეთ ამ პარამეტრის მნიშვნელობა გამორთული, რათა ყველა პროცესმა დაუყოვნებლივ მიიღოს შეტყობინებები ახალი პრობლემების შესახებ;

ასევე რეკომენდირებულია გამოიყენოთ epoll დირექტივა მოვლენების განყოფილებაში, რადგან ეს ეფექტური მეთოდიმიმდინარეობს შეყვანის კავშირების დამუშავება Linux-ისთვის, მაგრამ ეს მეთოდი ჯერ კიდევ კულისებშია, ამიტომ არ მინდა მისი ხელით დამატება. მოდით შევხედოთ კიდევ რამდენიმე პარამეტრს http განყოფილებიდან:

  • ფაილის გაგზავნა- შეცვალეთ მონაცემთა გაგზავნის მეთოდი. ყველაზე ეფექტური მეთოდი Linux-ისთვის.
  • tcp_nodelay, tcp_nopush- აგზავნის სათაურებსა და სხეულს ერთ პაკეტში, მუშაობს სამად;
  • keepalive_timeout- კლიენტის კავშირის მხარდაჭერის დრო ამოიწურა, თუ ბევრი სკრიპტი არ გაქვთ, მაშინ ის გაგრძელდება 10 წამი, შეგიძლიათ დააყენოთ მნიშვნელობა რამდენი ხანი სჭირდება კლიენტს სერვერთან დაკავშირებას;
  • reset_timedout_connection- გახსენით კავშირი დროის გასვლის შემდეგ.
  • open_file_cache- ქეშის შესახებ ინფორმაცია დახურულ ფაილებში. მაგალითად, open_file_cache max = 200000 inactive = 120s; max - ფაილების მაქსიმალური რაოდენობა ქეში, ქეში საათი.
  • open_file_cache_valid- თუ გჭირდებათ ფაილების შესაბამისობის შემოწმება. მაგალითად: open_file_cache_valid 120s;
  • open_file_cache_min_uses- მხოლოდ ქეში ფაილები, რომლებიც გაიხსნა მითითებულ რაოდენობაზე;
  • open_file_cache_errors- დაიმახსოვრე ფაილის ცვლილებები.
  • თუ_მოდიფიცირებული_მას შემდეგ- დავადგენ თუ როგორ დამუშავდება if-modified-since სათაურები. ამ სათაურის შემდეგ, ბრაუზერს შეუძლია აჩვენოს 304 პასუხი, თუ გვერდი არ შეცვლილა მას შემდეგ, რაც თქვენ იხილეთ იგი. შესაძლო ვარიანტები - არ გაგზავნო - გამორთვა, გაგზავნა, როდესაც საათი ზუსტად გადის - ზუსტი, გაგზავნა, როდესაც საათი მუშაობს ზუსტად ან მეტი - ადრე;

ასე გამოიყურება nginx conf-ის დაყენება:

მომხმარებელი nginx;
მუშა_პროცესები 4;
worker_cpu_affinity auto;
worker_rlimit_nofile 10000;
pcre_jit on;
error_log /var/log/nginx/error.log warn;
load_module "modules/ngx_pagespeed.so";
ივენთი (
multi_accept on;
მიღება_მუტექსი გამორთულია;
მუშა_კავშირები 1024;
}
http(
გაგზავნა ფაილი;
tcp_nopush on;
tcp_nodelay ჩართულია;
open_file_cache max = 200000 არააქტიური = 20s;
open_file_cache_valid 120s;
open_file_cache_errors ჩართულია;
reset_timedout_connection ჩართულია;
client_body_timeout 10;
keepalive_timeout 65;
მოიცავს /etc/nginx/sites-enabled.*.conf
}

3. http2-ის დაყენება

მე დეტალურად არ აღვწერ სერვერის განყოფილების დაყენებას, რადგან სტატიაში უკვე დააინსტალირეთ Nginx Ubuntu-ში და აქ ბევრი არაფერია დასამატებელი, SSL-ის დაყენება დიდი თემაა და ასევე განიხილება ამ სტატიაში. http2-ის დასაყენებლად, თქვენ ასევე გჭირდებათ SSL. შემდეგი, უბრალოდ გადაიტანეთ მოსმენის დირექტივა თქვენი სერვერის განყოფილებაში:

მოსმენა 194.67.215.125:443 default_server;

მოსმენა 194.67.215.125:443 http2 default_server;

ღერძი ასეთი მარტივი გზითშეგიძლიათ ჩართოთ http2, თუ Nginx-ის სწორი ვერსია დაინსტალირებულია cym-მდე.

4. დაარეგულირეთ PageSpeed

Google Pagespeed არის Nginx მოდული, რომელიც მოიცავს სხვადასხვა ოპტიმიზაციებს იმის უზრუნველსაყოფად, რომ გვერდები უფრო სწრაფად ნახულობენ, ვებ სერვერი უფრო ეფექტურად მუშაობს და მომხმარებლები არ განიცდიან დისკომფორტს. ეს მოიცავს ქეშირებას, html კოდის ოპტიმიზაციას, სურათების ოპტიმიზაციას, Javascript-ის ინტეგრაციას და css კოდიდა უფრო მეტი. ყველაფერი Nginx-ის თანაბარია, რაც უფრო ეფექტურია, ვიდრე PHP-ში რომ მუშაობდით. მაგრამ აქ არის ერთი ნაკლი, მოდული აჩვენებს ბოლო შეცვლილ სათაურს.

მარჯვნივ, PageSpeed ​​აინსტალირებს გრძელი ქეშის ხაზს ყველა ფაილისთვის და ამატებს ჰეშს ფაილის სახელს. ასე რომ, რესურსების მოხმარების სიჩქარე გაცილებით მაღალი იქნება, რადგან ბრაუზერი მხოლოდ ახალ ჰეშით მოიტანს ფაილებს და LastModified წაიშლება, რათა მომხმარებლებს შეეძლოთ ცვლილებები შეიტანონ ნებისმიერ ფაილში, რომელიც შეიცვლება. ახლა ვნახოთ, როგორ დავაყენოთ მოდული. ჩვენ მოგვიწევს რამდენიმე გამომავალი კოდის შეგროვება.

მნიშვნელოვანია დაუყონებლივ დააინსტალიროთ ინსტრუმენტები ასამბლეისთვის, თუ არ დააინსტალირეთ, მაშინ ამოიღებთ მათ და არ იცით როგორ იმუშაოთ:

yum დააინსტალირე wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel

ჩამოტვირთეთ და ამოალაგეთ Nginx გამომავალი თქვენი ვერსიისთვის, მაგალითად 1.13.3:

wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
# Tar -xzvf nginx-1.13.3.tar.gz

nginx სერვერის დაყენება არ მოიცავს პროგრამების ხელახლა აწყობას და ჩანაცვლებას მსგავსი კომპონენტებით, არამედ უბრალოდ vikoryst და გამომავალი მოდულის აწყობისთვის. ჩამოტვირთეთ და გახსენით შაბათ-კვირის გვერდის სიჩქარე:

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# Unzip v1.12.34.2-stable.zip

ჩამოტვირთეთ და გახსენით PageSpeed ​​ოპტიმიზაციის ბიბლიოთეკა საქაღალდეში მოდულის გამომავალი კოდებით:

cd ngx_pagespeed-1.12.34.2-stable /
# Wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
# Tar -xvzf 1.12.34.2-x64.tar.gz

ჩამოტვირთეთ და გახსენით OpenSSL 1.02:

wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
# Tar xvpzf openssl-1.0.2k.tar.gz

ახლა ჩვენ უნდა ავიღოთ მოდული. Nginx ძაფებში არსებული ყველაზე აშკარა ვარიანტებია:

ახლა კი გადავდივართ საქაღალდეში Nginx-ით, ვირჩევთ ყველა ვარიანტს, --add-dynamic-module ოფციას PageSpeed, OpenSSL-ისთვის და ვცდილობთ ჩამოტვირთოთ:

cd nginx-1.13.3
# ./კონფიგურაცია --პრეფიქსი = /etc/nginx --sbin-path = /usr/sbin/nginx --modules-path = /usr/lib64/nginx/modules --conf-path = /etc/nginx/nginx .conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx .pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache /nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path= /var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --http_secure_link_with_module --with-http_secure_link_with_module --with -http_stub_status_module ---http_sub_module --wit h-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with "-თან ერთად - O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector-strong --param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 -mtune = generic "--თან -ld-opt=-- ერთად -openssl=$HOME/openssl-1.0.2k --add-dynamic-module=$HOME/ngx_pagespeed-1.12.34.2-stable$(PS_NGX_EXTRA_FLAGS)
# გააკეთოს

თუ ყველაფერი სწორად იყო გაყოფილი, მაშინ გამომავალი არის ngx_pagespeed.so მოდული obj საქაღალდეში, რომელიც უნდა დააკოპიროთ /etc/nginx/modules საქაღალდეში:

cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

მოდით შევქმნათ საქაღალდე ქეშისთვის:

mkdir -p /var/ngx_pagespeed_cache
# Chown -R nginx: nginx /var/ngx_pagespeed_cache

ახლა დაამატეთ შემდეგი ხაზი მოდულის გასააქტიურებლად /etc/nginx/nginx.conf-ში:

load_module "modules/ngx_pagespeed.so";

nginx-ზე დაფუძნებული ვებ სერვერი შესანიშნავი გზაა ვებსაიტების პროდუქტიულობის გასაუმჯობესებლად. სტატიკური შინაარსის დამუშავების სიჩქარეს უბრალოდ არ აქვს თანაბარი: ის ადვილად იჭერს ათასობით ღამის კავშირს და შეიძლება ადვილად ოპტიმიზირებული და მორგებული იყოს ნებისმიერი კონფიგურაციისთვის. თუმცა? მოქმედებს როგორც Apache-ს წინა ნაწილი, nginx არის მთელი ვებ ინფრასტრუქტურის ყველაზე ძლიერი ნაწილი, ამიტომ nginx უსაფრთხოებას განსაკუთრებული ყურადღება უნდა მიექცეს.

ეს სტატია არის ერთგვარი შეჯამება, ან, თუ გინდათ, ყველა nginx უსაფრთხოების ტექნოლოგიის შეჯამება. მას არ ექნება თეორია, ვებ სერვერის დაყენების საფუძვლების აღწერა ან სხვა რამ. ამის ნაცვლად, თქვენ იპოვით პრაქტიკულ მასალას, რომელიც აღწერს ყველა იმ ძირითად საფეხურს, რომელიც უნდა დაიცვათ, რათა სწორად შეაჩეროთ ვებ სერვერის ქურდობა.

ინსტალაცია

nginx პაკეტი ხელმისაწვდომია წინასწარ შედგენილ ხედებში ნებისმიერი განაწილებისთვის. თუმცა, დამოუკიდებლად შექმნით სერვერს, შეგიძლიათ შექმნათ უფრო კომპაქტური და საიმედო და ასევე გაქვთ შესაძლებლობა შეცვალოთ ვებ სერვერის თანმიმდევრობა, რათა აღმოფხვრას მუდმივი სკრიპტის კადრები.

შეცვალეთ ვებ სერვერის კონფიდენციალურობის წესრიგი

ჩამოტვირთეთ nginx გამომავალი ფაილიდან src / http / ngx_http_header_filter_module.c და იპოვეთ შემდეგი ორი სტრიქონი:

static char ngx_http_server_string = "სერვერი: nginx" CRLF;
static char ngx_http_server_full_string = "სერვერი:" NGINX_VER CRLF;

შეცვალეთ ისინი ამ სიმბოლოთი:

static char ngx_http_server_string = "სერვერი:] [ვებ სერვერი" CRLF;
static char ngx_http_server_full_string = "სერვერი:] [ვებ სერვერი" CRLF;

ჩვენ ვნახეთ ყველა nginx მოდული, რომელიც თქვენ არ იყენებდით.

რამდენიმე nginx მოდული უკავშირდება ვებ სერვერს კომპილაციის დაწყებამდე და ნებისმიერი მათგანი სავსეა პოტენციური დაუცველობით. შესაძლოა, მომავალში ერთ-ერთ მათგანში აღმოჩნდეს დაუცველობა და თქვენი სერვერი საფრთხის ქვეშ აღმოჩნდეს. არასაჭირო მოდულების ჩართვით, შეგიძლიათ მნიშვნელოვნად შეამციროთ ასეთი სიტუაციის რისკი.

Vikonai აგროვებს დამატებითი შეტევითი ბრძანებებისთვის:

# ./კონფიგურაცია --without-http_autoindex_module --without-http_ssi_module
# გააკეთოს
# დააინსტალირეთ

ამ გზით თქვენ აშორებთ nginx-ს ჩართული (და უმეტეს შემთხვევაში ბრენდირებული) SSI (Server Side Includes) და Autoindex მოდულების უკან. იმის გასარკვევად, თუ რომელი მოდულების უსაფრთხოდ ამოღება შეიძლება ვებ სერვერიდან, გაუშვით კონფიგურაციის სკრიპტი "-help" დროშით.

nginx.conf-ის მომზადება

nginx-ის დაყენების შემდეგ დააკონფიგურირეთ კვალი. ჟურნალის გვერდებზე უკვე იქნება მასალა, რომელიც აღწერს ამ პროცესს, მაგრამ ჩვენ დავასრულებთ ამ სტატისტიკით და ვისაუბრებთ სერვერის უსაფრთხოების გაუმჯობესების გზებზე.

ჩართეთ სერვერის ვერსიის ჩვენება სოციალური მედიის ყველა გვერდზე

დაამატეთ ხაზი "server_tokens off" nginx.conf ფაილში. თქვენ შეგიძლიათ გამოიყენოთ nginx, რომ მიიღოთ ინფორმაცია ვებ სერვერის ტიპისა და ვერსიის შესახებ გვერდებზე, რომლებიც გენერირდება კლიენტის მოთხოვნის საპასუხოდ.

განწყობის დაცვა სტეკის ხედიდან

დაამატეთ შემდეგი რიგები სერვერის განყოფილებაში:

# Vi /etc/nginx/nginx.conf

# მაქსიმალური ბუფერის ზომა კლიენტის ენერგიის დაზოგვისთვის
client_body_buffer_size 1K;
# მაქსიმალური ბუფერის ზომა კლიენტის მონაცემთა სათაურების შესანახად
client_header_buffer_size 1k;
# კლიენტის მიერ მითითებული სხეულის მაქსიმალური ზომა მითითებულია სათაურის Content-Length ველში. ვინაიდან სერვერი პასუხისმგებელია ფაილების ხელყოფის შენარჩუნებაზე, ეს მნიშვნელობა უნდა გაიზარდოს
კლიენტი_მაქს_სხეულის_ზომა 1კ;
# ბუფერების რაოდენობა და ზომა კლიენტის მოთხოვნის დიდი სათაურის წასაკითხად
large_client_header_buffers 2 1k;

ყურადღება მიაქციეთ large_client_header_buffers დირექტივას. URI მწკრივის შესანახად, nginx ხედავს, რომ არის ბუფერები, რომელთა ზომა უდრის მეხსიერების მხარის ზომას (x86 - 4 KB). ბუფერების გადატვირთვა ხდება ყოველ ჯერზე, როდესაც დამუშავების დასრულების შემდეგ კავშირი გადადის შენარჩუნების მდგომარეობაში. ორ 1 KB ბუფერს შეუძლია URI-ების დაზოგვა მხოლოდ 2 KB-მდე, რაც ეხმარება ბოტებთან და DoS შეტევებთან ბრძოლაში.

პროდუქტიულობის გასაზრდელად, დაამატეთ შემდეგი რიგები:

# Vi /etc/nginx/nginx.conf

# დროის ამოწურვა კლიენტის სხეულის კითხვისას
client_body_timeout 10;
# დრო ამოიწურა კლიენტის მოთხოვნის სათაურის წაკითხვისას
client_header_timeout 10;
# ვადა, კლიენტთან ყოველგვარი შენარჩუნების კავშირის ბოლოს სერვერის მხრიდან არ დაიხურება
keepalive_timeout 5 5,
# ვადაა კლიენტზე სიგნალის გადაცემისას
send_timeout 10;

აკონტროლეთ ერთსაათიანი კავშირების რაოდენობა

ვებ სერვერის ხელახალი ჰოსტინგისგან დასაცავად და DoS შეტევის შესაქმნელად, დაამატეთ შემდეგი ხაზები კონფიგურაციაში:

# Vi /etc/nginx/nginx.conf

# ჩვენ აღვწერთ ზონას (ლიმიტებს), რომელშიც შეინახება სესიები. ზონას, რომლის ზომაა 1 მბ, შეუძლია დაზოგოს დაახლოებით 32000 ერთეული, ხოლო ზომა შეიძლება დაყენდეს 5 მბ-ზე.
limit_zone slimits $binary_remote_addr 5m;
# ადგენს ერთსაათიანი კავშირების მაქსიმალურ რაოდენობას ერთი სესიისთვის. არსებითად, ეს რიცხვი ადგენს კავშირების მაქსიმალურ რაოდენობას IP-ზე
limit_conn slims 5;

პირველი დირექტივა მდებარეობს HTTP განყოფილებაში, მეორე - მდებარეობის განყოფილებაში. თუ კავშირების რაოდენობა სცილდება ლიმიტებს, კლიენტი იღებს შეტყობინებას "მომსახურება მიუწვდომელია" კოდით 503.

ნება მიეცით მხოლოდ ადამიანებს დაუკავშირდნენ თქვენს დომენს

თავდამსხმელებს შეუძლიათ გამოიყენონ ბოტები გაჟონილი ვებ სერვერების სკანირებისთვის და მოსაძებნად. სთხოვეთ ბოტებს უბრალოდ დაასკანირონ IP მისამართების დიაპაზონი, მოძებნონ 80 ღია პორტი და გამოიყენონ HEAD ბრძანება ვებ სერვერის (ან მთავარი ბოლო) შესახებ ინფორმაციის მისაღებად. თქვენ შეგიძლიათ მარტივად დაივიწყოთ ასეთი სკანირება სერვერზე ჩამოტვირთვის IP მისამართის დაბლოკვით (დაამატეთ იგი მდებარეობის ქვეგანყოფილებაში):

# Vi /etc/nginx/nginx.conf

if ($host!~^(host.com | www.host.com)$) (
დაბრუნება 444;
}

შეაერთეთ ხელმისაწვდომი განაწილების მეთოდების რაოდენობა ვებ სერვერთან

ზოგიერთი ბოტი იყენებს სერვერზე თავდასხმის სხვადასხვა მეთოდს თითოეული ტიპისა და/ან შეღწევის საცდელად, მაგრამ RFC 2616 ნათლად წერს, რომ ვებ სერვერს არ მოეთხოვება ყველა მათგანის დანერგვა და მეთოდები, რომლებიც არ არის მხარდაჭერილი, შეიძლება უბრალოდ არ გახდეს მოძველებული. დღეს, მხოლოდ მეთოდებს GET (დოკუმენტის მოთხოვნა), HEAD (სერვერის სათაურების მოთხოვნა) და POST (დოკუმენტის გამოქვეყნების მოთხოვნა) მოკლებულია მათ გამოყენებას, ასე რომ, ყველა სხვა ადვილად შეიძლება ჩაერთოს სერვერზე ქვემოთ მითითებული მწკრივის დამატებით. კონფ. Iguration ფაილის განყოფილება:

# Vi /etc/nginx/nginx.conf

if ($request_method! ~ ^ (GET | HEAD | POST) $) (
დაბრუნება 444;
}

მიმდინარეობს ბოტების განახლება

ბოტების, სკანერების და სხვა მავნე ობიექტების დაბლოკვის კიდევ ერთი მეთოდი კონკრეტული ტიპის კლიენტისთვის (მომხმარებლის აგენტისთვის). ეს არ არის ძალიან ეფექტური, რადგან ბოტების უმეტესობა თიშავს ყველა ლეგიტიმურ ბრაუზერს და ზოგიერთ შემთხვევაში ის ყავისფერდება:

# Vi /etc/nginx/nginx.conf

# დაბლოკილი მენეჯერები იზიდავენ
თუ ($http_user_agent ~ * LWP::Simple | BBBike | wget) (
დაბრუნება 403;
}
# მოქმედებები და ბოტების ტიპები დაბლოკილია
if ($http_user_agent ~ * msnbot | scrapbot) (
დაბრუნება 403;
}

რეფერერის სპამის დაბლოკვა

თუ თქვენი საიტი აქვეყნებს ვებ ჟურნალებს ფარული ხედით, თქვენ შეგიძლიათ მარტივად გახდეთ Referrer-ის სპამის მსხვერპლი (თუ თქვენს სერვერზე იგზავნება სპამის ბოტები, მათ შორის რეფერერის სათაურში, რეკლამირებული საიტის მისამართები). ამ ტიპის სპამს შეუძლია ადვილად მოახდინოს ინტერნეტ საიტის SEO რეიტინგების რანჟირება, ამიტომ ის, რა თქმა უნდა, უნდა დაიბლოკოს. ამის გაკეთების ერთ-ერთი გზაა სარეკლამო საიტების მისამართებში გამოსახული სიტყვების უმეტესი ნაწილი შავ სიაში დამატება.

# Vi /etc/nginx/nginx.conf

# სერვერის განყოფილება
if ($ http_referer ~ * (პატარა | იყიდება | გოგონა | სამკაულები | სიყვარული | ნუდიტი | ორგანული | პოკერი | პორნო | სექსი | მოზარდი))
{
დაბრუნება 403;
}

ცხელი ბმულის დაბლოკვა

Hotlink - სხვა საიტის სურათის (სხვა შინაარსის) გვერდის ჩართვა. არსებითად, ეს არის დანაშაული, რადგან გამოსახულებები, რომლებიც კარგავენ ერთ წელზე მეტ დროს თავისუფალ დროს, არა მხოლოდ ადვილად იმარჯვებენ სხვებისთვის, არამედ ქმნიან თავდასხმას თქვენს ვებ სერვერზე, სხვა თაღლითის მითითების გარეშე. სურვილის წინააღმდეგ საბრძოლველად, თქვენ უნდა იმუშაოთ ისე, რომ სურათები გადაეცეს კლიენტს მხოლოდ მაშინ, როდესაც ისინი ითხოვენ მათ, სანამ ისინი უკვე არიან საიტზე (სხვა სიტყვებით რომ ვთქვათ, რეფერენტის მოთხოვნის სათაური პასუხისმგებელია საპასუხო ანგარიშსწორებაზე. თქვენი საიტის სახელი). დაამატეთ შემდეგი ხაზები nginx.conf კონფიგურაციის ფაილის სერვერის განყოფილებაში (host.com არის თქვენი ვებსაიტის მისამართი):

# Vi /etc/nginx/nginx.conf

მდებარეობა/სურათები/(
valid_referers არცერთი დაბლოკილია www.host.com host.com;
თუ ($invalid_referer) (
დაბრუნება 403;
}
}

როგორც ალტერნატივა, შეგიძლიათ დააკონფიგურიროთ სერვერი, რათა გამოაგზავნოთ სპეციალური ბანერი მოთხოვნილი სურათის ნაცვლად ქურდობის შესახებ. ამისათვის შეცვალეთ მწკრივი "დაბრუნება 403" მწკრივით:

გადაწერა^/სურათები/ატვირთვები. *\. (gif | jpg | jpeg | png) $ http://www.host.com/banned.jpg ბოლო

დაიცავით მნიშვნელოვანი დირექტორიები მესამე მხარისგან

ნებისმიერი სხვა ვებ სერვერის მსგავსად, nginx საშუალებას გაძლევთ დაარეგულიროთ წვდომა დირექტორიებზე IP მისამართისა და პაროლების საფუძველზე. ეს უნარი შეიძლება გამოყენებულ იქნას საიტის გარკვეული ნაწილების გარე თვალიდან დასამალად. მაგალითად, URI-ის გარე სამყაროს გამოსავლენად:

# Vi /etc/nginx/nginx.conf

მდებარეობა/ატვირთვები/(
# საშუალებას აძლევს წვდომას მხოლოდ ადგილობრივ ქსელში არსებულ მანქანებზე
დაუშვას 192.168.1.0/24;
# ამაღლებს ყველა დანარჩენს
უარყოს ყველა;
}

ახლა ატვირთვების დირექტორიაში არსებულ დოკუმენტებზე წვდომა მხოლოდ ადგილობრივ მომხმარებლებს შეუძლიათ. პაროლის დასაყენებლად, თქვენ უნდა დააჭიროთ სხვა ნაბიჯებს. ამიერიდან, თქვენ უნდა შექმნათ პაროლის ფაილი, რომელიც პირადია nginx-ისთვის და დაამატეთ საჭირო ანგარიშები თქვენს ანგარიშში (მაგალითად ადმინისტრატორისთვის):

# Mkdir /etc/nginx/.htpasswd
# Htpasswd -c /etc/nginx/.htpasswd/passwd admin

# Vi /etc/nginx/nginx.conf

მდებარეობა/ადმინისტრატორი/(
auth_basic "შეზღუდული";
auth_basic_user_file /etc/nginx/.htpasswd/passwd;
}

ახალი koristuvachs შეიძლება დაემატოს დამატებითი შეტევითი ბრძანების გამოყენებით:

# Htpasswd -s /etc/nginx/.htpasswd/passwd koristuvach

ვიკირისტი SSL

თუ თქვენი საიტი ამუშავებს მომხმარებლის პირად მონაცემებს, როგორიცაა საკრედიტო ბარათის ნომრები, პაროლები სხვა სერვისებისთვის, ან უზრუნველყოფს სხვა მნიშვნელოვან ინფორმაციაზე წვდომას, რომელიც შეიძლება გამოყენებულ იქნას მესამე მხარისთვის, გთხოვთ, დაშიფვრის შესახებ. Nginx კარგად მუშაობს SSL-თან და მის შესაძლებლობებს არ აკლია.

SSL დაშიფვრის კონფიგურაციისთვის nginx-ის გამოყენებით, გთხოვთ, ეწვიოთ Vikonati kilka-ს მარტივი crumbs. თქვენ ჯერ უნდა შექმნათ სერთიფიკატი შემდეგი ბრძანების თანმიმდევრობის გამოყენებით:

# Cd /etc/nginx
# Openssl genrsa -des3 -out server.key 1024
# Openssl req -new -key server.key -out server.csr
# Cp server.key server.key.org
# Openssl rsa -in server.key.org -out server.key
# Openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

შემდეგ აღწერეთ სერთიფიკატი nginx კონფიგურაციის ფაილში:

# Vi /etc/nginx/nginx.conf

სერვერი (
server_name host.com;
მოუსმინე 443;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
access_log /etc/nginx/logs/ssl.access.log;
error_log /etc/nginx/logs/ssl.error.log;
}

ამის შემდეგ შეგიძლიათ გადატვირთოთ ვებ სერვერი:

# /Etc/init.d/nginx გადატვირთვა

ბუნებრივია, თავად ვებსაიტის მხარდაჭერის გარეშე, ის უპრობლემოდ იმუშავებს.

Სხვა საშუალებები

დააყენეთ სწორი მნიშვნელობები სისტემის ცვლადებისთვის

გახსენით ფაილი /etc/sysctl.conf და განათავსეთ იგი შემდეგ რიგში:

# Vi /etc/sysctl.conf

# დაიცავით სმურფის შეტევებისგან
net.ipv4.icmp_echo_ignore_broadcasts = 1
# დაიცავით არასწორი ICMP შეტყობინებებისგან
net.ipv4.icmp_ignore_bogus_error_responses = 1
# დაიცავით SYN წყალდიდობისგან
net.ipv4.tcp_syncookies = 1
# დაცულია მოწყობილობიდან მარშრუტირებით
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
#დაცვა გაყალბებისგან
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Mi არ არის როუტერი
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# ჩართეთ ExecShield
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# ჩვენ ვაფართოებთ ხელმისაწვდომი პორტების სპექტრს
net.ipv4.ip_local_port_range = 2000 65000
# TCP ბუფერების მაქსიმალური ზომის გაზრდა
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1

განათავსეთ ვებ სერვერის root დირექტორია ხილულ განყოფილებაში

დანაყოფის ხედვაში ვებ სერვერის root დირექტორიას განთავსებით და ნებისმიერის ახალი მდებარეობის დაცვით დაკავშირებული ფაილებიდა მოწყობილობის ფაილები და დაიცავით სისტემა მათგან, ვისაც შეუძლია უარყოს წვდომა ვებ სერვერის root-ზე. ასე რომ, ჩანაწერი /etc/fstab ფაილში ასე გამოიყურება:

/ Dev / sda5 / nginx ext4 ნაგულისხმევი, nosuid, noexec, nodev 1 2

Chroot/jail nginx

როგორიც არ უნდა იყოს საქმე, nix სისტემა საშუალებას გაძლევთ დახუროთ დანამატი ვიკონის იზოლირებულ შუაში. Linux-ში შეგიძლიათ გამოიყენოთ ტექნოლოგიები KVM, Xen, OpenVZ და VServer, FreeBSD-ში - Jail, Solaris-ში - Zones. თუ ორივე ეს ტექნოლოგია მიუწვდომელია, შეგიძლიათ nginx ჩადოთ კლასიკურ chroot-ში, რომელიც გინდათ უფრო ძლიერია, წინააღმდეგ შემთხვევაში უფრო მეტი თავდამსხმელი შეძლებს ჩარევას.

დააინსტალირეთ SELinux წესები nginx დაცვისთვის

იზოლირებული მედიის კარგი ალტერნატივაა Viconnaya ადგილობრივი სისტემებიაღმოაჩინა და გაექცა შეჭრას, როგორიცაა SELinux ან AppArmor. თუ სწორად არის მორგებული, მათ შეუძლიათ დაამარცხონ ბოროტი ვებ სერვერის თავდასხმები. ნაგულისხმევად, ისინი არ არის კონფიგურირებული რობოტებისთვის nginx, prote-თან დაკავშირებით პროექტის ფარგლებში. SELinuxNginx(Http://sf.net/projects/selinuxnginx/) SELinux-ისთვის შეიქმნა წესები, რომელთა გამოყენება შესაძლებელია საჭიროებისამებრ. შეგიძლიათ ჩამოტვირთოთ და დააინსტალიროთ მხოლოდ:

# Tar -zxvf se-ngix_1_0_10.tar.gz
# Cd se-ngix_1_0_10 / nginx
# გააკეთოს
# /usr/sbin/semodule -i nginx.pp

firewall პარამეტრები

თუ nginx-ს დააინსტალირებთ მანქანებზე, რომლებიც მზად არიან მაღალი განლაგებისთვის, ხშირად რჩებით სერვერზე გაშვებული ერთი კიდეული სერვისის გარეშე. სერვერის უზრუნველსაყოფად, შეგიძლიათ შექმნათ წესების ძალიან მცირე ნაკრები, რომელიც გახსნის პორტებს 80, 110 და 143 (რადგან, რა თქმა უნდა, nginx დამნაშავეა ასევე IMAP / POP3 პროქსიების გამოყენებაში) და დახურავს ყველა ზარს, ამ სამყაროში ყველაფერი განსხვავებულია. .

შეზღუდეთ კავშირების რაოდენობა Firewall-ის მიღმა

ვებსაიტისთვის, რომელიც არც თუ ისე პოპულარულია, კარგი იდეაა ერთი და იგივე IP მისამართიდან რამდენიმე ტესტის გაერთიანება ერთში. ეს დაგიცავთ სხვადასხვა სახის DoS შეტევებისა და უხეში ძალისგან. Linux-ზე შეგიძლიათ გამოიყენოთ სტანდარტული iptables / netfilter მდგომარეობის მოდული:

# Iptables -A INPUT -p tcp --dport 80 -i eth0 \
-მ სახელმწიფო --სახელმწიფო NEW -m ბოლო --set
# Iptables -A INPUT -p tcp --dport 80 -i eth0 \
-m მდგომარეობა --სახელმწიფო NEW -m ბოლო --განახლება \
--წამი 60 --დარტყმების რაოდენობა 15 -j DROP

წესები ამცირებს კავშირების რაოდენობის ლიმიტს ქსელში ერთი IP-დან 15-მდე. იგივე შეიძლება გაკეთდეს pf-ის გამოყენებით:

# Vi /etc/pf.conf

webserver_ip = "1.1.1.1"
მაგიდა გაგრძელდეს
სწრაფად დაბლოკვა
გადასცეს $ ext_if proto tcp $ webserver_ip \
პორტი www flags S/SA შეინახეთ მდგომარეობა \
(Max-src-conn 100, max-src-conn-rate 15/60,\
გადატვირთვა ჩარეცხვა)

გარდა თანმიმდევრული კავშირების რაოდენობის ლიმიტისა (15 საათში), ეს წესი ადგენს დამატებით ლიმიტს ერთსაათიანი კავშირების რაოდენობაზე 100.

PHP პარამეტრები

თუ იყენებთ nginx-ს PHP-სთან დაკავშირებით, არ დაგავიწყდეთ მისი დარეგულირება. ღერძი პასუხისმგებელია მოპარული სერვერის კონფიგურაციის ფაილის /etc/php/php.ini ნახვაზე:

# Vi /etc/php/php.ini

# სახიფათო ფუნქციები შეიძლება გამორთოთ
disable_functions = phpinfo, system, mail, exec
# მაქსიმალური საათი სკრიპტისთვის
max_execution_time = 30
# მაქსიმალური საათი, როგორ შეგიძლიათ გამოიყენოთ სკრიპტი მონაცემების დასამუშავებლად?
max_input_time = 60
# მეხსიერების მაქსიმალური რაოდენობა, რომელიც ჩანს კანის სკრიპტისთვის
მეხსიერების_ლიმიტი = 8 მ
# მონაცემების მაქსიმალური ზომა, რომელსაც სკრიპტი იყენებს POST მეთოდის გარდა
post_max_size = 8M
# ფაილის მაქსიმალური ზომა
upload_max_filesize = 2M
# არ აჩვენოთ PHP სკრიპტები დეველოპერებს
ჩვენების_შეცდომები = გამორთულია
# ჩართეთ უსაფრთხო რეჟიმი
safe_mode = ჩართული
# ჩართეთ SQL უსაფრთხო რეჟიმი
sql.safe_mode = ჩართული
# ამ კატალოგში ნებადართულია მხოლოდ გარე ბრძანებების შეტანა
safe_mode_exec_dir = / გზა / მიმართ / მოპარული / დირექტორია
# დაცულია PHP-ის შესახებ ინფორმაციის ნაკადისგან
expose_php = გამორთულია
# ვედემოს ჟურნალი
log_errors = ჩართულია
# იცავს წაშლილი ფაილების შენახვას
allow_url_fopen = გამორთულია

ვისნოვკი

სტატიის რეკომენდაციებში აღწერილობების დაცვით, თქვენ თავიდან აიცილებთ ვებ სერვერის მეტ ქურდობას. გთხოვთ გაითვალისწინოთ, რომ ყველა ტექნოლოგია არ შეესაბამება თქვენს კონფიგურაციას. მაგალითად, უხეში ძალის დაცვა, რომელიც ეფუძნება ბუფერების ზომის შემცირებას, რომელსაც nginx ხედავს კლიენტის მოთხოვნების დამუშავებისას, შეიძლება გამოიწვიოს პროდუქტიულობის ვარდნა და ზოგიერთ შემთხვევაში, წარუმატებლობა მოთხოვნის დამუშავებისას. კავშირების რაოდენობის შემცირება გამოიწვევს ძლიერ გავლენას პროდუქტიულობაზე საშუალო დატვირთული ვებსაიტებისთვის, წინააღმდეგ შემთხვევაში ეს გამოიწვევს ნარჩენებს, რადგან საიტს აქვს კანალიზაციის დაბალი ნაკადი. ყოველთვის შეამოწმეთ, როგორ მოქმედებს თქვენ მიერ განხორციელებული ცვლილებები ვებ გვერდის პროდუქტიულობასა და ეფექტურობაზე.

დღის გმირის შესახებ

Nginx არის ერთ-ერთი ყველაზე პროდუქტიული და პოპულარული ვებ სერვერი მსოფლიოში. Netcraft-ის მონაცემებზე დაყრდნობით, იგი გამოიყენება 12 მილიონზე მეტი ვებსაიტის მხარდასაჭერად მთელს მსოფლიოში, მათ შორის ისეთი მასტოდონების, როგორიცაა Rambler, Yandex, Begun, WordPress.com, Wrike, vkontakte.ru, megashara.com, Librusek და Taba.ru. . კომპეტენტური არქიტექტურა, რომელიც დაფუძნებულია მულტიპლექსზე, სისტემური დაწკაპუნების შერჩევის, epoll (Linux), kqueue (FreeBSD) და მეხსიერების მართვის მექანიზმების გამოყენებით პულებზე (პატარა ბუფერები 1-დან 16 KB-მდე), საშუალებას აძლევს nginx-ს არ სთხოვოს, იძლევა მითითებებს თუნდაც მაღალი navantazhennyami-ში, ვიტრიფიკაცია. 10000-ზე მეტი ერთსაათიანი კავშირი (ეს არის C10K პრობლემის სახელი). თავდაპირველად დაწერილი იყო იგორ სისოევის მიერ Rambler კომპანიისთვის და გამოვიდა 2004 წელს BSD-ის მსგავსი ლიცენზიით.

კონტაქტში