ვებგვერდის გაშვება რეალურ სერვერზე ზოგისთვის ძალიან რთული საქმეა, ასე იყო ჩემთვისაც, სერვერის კონფიგურაციისთვის დღესდღეობით ერთერთი ყველაზე გავრცელებული ვებ სერვერია nginx, მისი კონფიგურაციის ძირითადი პრინციპების ცოდნის გარეშე თითქმის შეუძლებელია.
nginx წარმოადგენს ღია კოდის პინციპზე დაფუძნებულ პროგრამულ უზრუნველყოფას, რომელიც შექმნილია Igor Sysoev-ის მიერ.
როგორც მოგეხსენებათ, val-do.com ჩემი პირველი პროექტია, რომელიც სრულიად ჩემს მიერაა დაწერილი, როგორც frontend ასევე backend და ასევე სერვერის კონფიგურაციაზეც მე მომიწია შრომა.
ყველაზე რთული ნაწილი სერვერის კონფიგურაცია იყო, ამ დროს დავაგროვე გარკვეული ცოდნა nginx-ის კონფიგურაციასთან დაკავშირებით, რომელსაც ვეცდები გაგიზიაროთ.
როგორც მოგეხსენებათ სერვერების 90%-ზე მეტი linux ოპერაციულ სისტემაზეა, შესაბამისად არ დავწვრილმანდები მისი ინსტალაციით, უბრალოდ დაგიტოვებთ მზა რესურსებს, რომლის დახმარებითაც შეძლებთ თქვენს სისტემაზე, Windows, Linux, Mac OS-ზე დააყენოთ nginx.
nginx -s stop - გათიშვა
nginx -s quit - გამოსვლა
nginx -s reload - გადატვირთვა
nginx -s reopen - ხელახლა გახსნა ლოგ ფაილების
nginx როგორც სხვა პალიკაციები/ენები გამოირჩევა თავისი სპეციფიური სინტაქსით, ამ პარაგრაფში შევეცდები აგიხსნათ მოცემული შეთანხმებები
მაგალითი 1
http {
server {
}
}
მოცემული მაგალითი წარმოადგენს ბლოკებს, ანუ ბლოკები გამოიყოფა {} სიმბოლოებით, მაგალითში http არის ბლოკი, ასევე ამ ბლოკში მოთავსებულია
server ბლოკი
მაგალითი 2
server {
listen 8080;
root /data/mysite;
}
მაგალითი 2-ში წარმოსახული გვაქვს server ბლოკი, რომელშიც წერია შემდეგი რამ listen 8080, ერთ ხაზზე ჩაწერილი სიტყვა listen შემდეგ ე.წ. ჰარი (გამოტოვება) და 8080
ამ ჩანაწერს ეწოდება დირექტივები.
პ.ს. დირექტივა აუცილებლად უნდა სრულდებოდეს წერტილ მძიმით ;
მაგალითი 3
server {
listen 8080;
root /data/mysite;
}
იმ შემთხვევაში თუ ბლოკში ანუ {} ფრჩხილებში გვაქვს 1 დირექტივა მაინც მაშინ მას ეწოდება კონტექსტი, მესამე მაგალითში server-ს დავუძახებთ არა ბლოკს,
არამედ server კონტექსტს
ზუსტი დამთხვევებისთვის ე.წ. exact match-ისთვის გამოიყენება ტოლობის ნიშანი
მაგალითი 1
location = / {...}
ამ შემთხვევაში nginx შემომავალ მოთხოვნას გაუშვებს root მისამართზე ან პროექტზე, ანუ მაგალითად val-do.com-ზე ხოლო შიდა მისამართები შეგვიძლია საერთოდ
სხვა პორტზე ან პორექტზე გავუშვათ (შიდა მისამართებში იგულისხმება root-ის შემდეგი გვერდები, მაგალითად val-do.com/contact, val-do.com/courses)
მაგალითი 2
location / {...}
მაგალით 2-ში ყველა შემომავალი მოთხოვნა root მისამართზე, ანუ თუ ჩვენ გვაქვს საიტი მაგლითად val-do.com შემომავალი მოთხოვნა გაეშვება val-do.com-ზე
და ასევე ყველა შემდეგი მისამართი, ანუ val-do.com/contact, val-do.com/courses და ა.შ.
გამოიყენება მაშინ, როდესაც გვინდა სტატიკური ასეტები კონკრეტულ url-ზე მიმართო.
მაგალითად თუ სერვერზე სტატიკური ასეტები გვაქვს შემდეგ დირექტორიაში /var/www/myproject/assets
პირობითად კოდში გვაქვს შემდეგი სურათი <img src="/assets/logo.png"/>, პროდაქშენზე გაშვებისას alias -ით შეგვიძლია
logo.png სერვერს წავაკითხინოთ /var/www/myproject/assets საქაღალდიდან
მაგალითი 1
location /assets {
alias /var/www/myproject/assets
}
გამოიყენება კონკრეტული url-ის გადამისამართებისთვის. მაგალითისთვის წარმოვიდგინოთ რომ სერვერზე გვაქვს რამდენიმე ლოკალჰოსტი გაშვებული სხვადასხვა პორტზე, მაგალითისთვის მთავარი პროექტი ეშევება localhost:3000 პორტზე, ამ დროს გაჩნდა საჭიროება, რომ localhost:3000/test მისამართზე ჩავტვირთოთ საერთოდ სხვა პროექტი, რომელიც პირობითად localhost:4000 პორტზეა გაშვებული
მაგალითი 1
location /test {
proxy_pass http://localhost:4000;
}
ამ მაგალითის მიხედვით მოხდება გადამისამართება localhost:3000/test-დან http://localhost:4000 პორტზე გაშვებულ პროექტზე