System

What is Nginx?

အားလုံးပဲ မဂၤလာပါ ခင္ဗ်။

ကြၽန္ေတာ္ကေတာ့ Spiceworks Myanmar မွာ Junior Backend Developer အျဖစ္ဝင္ေရာက္လုပ္ကိုင္ေနတဲ့ ေမာင္ေဝလ်ံျပည့္ ျဖစ္ပါတယ္ခင္ဗ်။ ကြၽန္ေတာ္အခု မွ်ေဝေပးသြားမယ့္ အေၾကာင္းအရာေလးကေတာ့ Nginx ျဖစ္ပါတယ္။

Nginx ဆိုတာကေတာ့ “engine-ex” လို႔ အသံထြက္ၿပီး သူက Open-Source Web Server တစ္ခုျဖစ္ပါတယ္။ Nginx ရဲ႕ ပထမဆုံးေအာင္ျမင္မႈက Web Server ျဖစ္ေပမယ့္ အခုသူ႔ကို Reverse Proxy, HTTP Caching, Load Balancing လုပ္တဲ့ အခါေတြမွာပါအသုံးျပဳႏိုင္ၿပီျဖစ္ပါတယ္။ Nginx ကိုစတင္ၿပီး တီထြင္ခဲ့တာကေတာ့ ၂၀၀၂ ခုႏွစ္ကေန စတင္ခဲ့တာျဖစ္ၿပီး သူ႔ရဲ႕ ကနဦးရည္႐ြယ္ခ်က္ကေတာ့ C10k ဆိုတဲ့ ျပႆနာကို ေျဖရွင္းဖို႔ျဖစ္ပါတယ္။ Nginx ကို ၂၀၀၄ ခုႏွစ္မွာ စတင္ၿပီး အမ်ားသုံးႏိုင္ဖို႔ ထုတ္လုပ္ခဲ့ၿပီး ၂၀၁၁ ခုႏွစ္မွာေတာ့ စီးပြားေရးလုပ္ငန္းတစ္ခုအေနနဲ႔ စတင္ၿပီးေတာ့ ဝန္ေဆာင္မႈေတြေပးခဲ့ပါတယ္။ Nginx ကို C10k ဆိုတဲ့ တၿပိဳင္နက္တည္း ဆက္သြယ္မႈေပါင္း ၁၀၀၀၀ ကို ေျဖရွင္းႏိုင္တဲ့ အေျဖတစ္ခုအေနနဲ႔စတင္ၿပီးသိလာၾကပါတယ္။

Nginx ကို နာမည္ႀကီး ကုမၸဏီမ်ားျဖစ္တဲ့ Autodesk, Atlassian, Intuit, T-Mobile, GitLab, DuckDuckGo, Microsoft, IBM, Google, Adobe, Salesforce, VMWare, Xerox, LinkedIn, Cisco, Facebook, Target, Citrix Systems, Twitter, Apple, Intel စသည့္တို႔မွာ အသုံးျပဳေနၿပီးေတာ့ Nginx ကတျခား နာမည္ႀကီးေနတဲ့ Web Server ေတြနဲ႔ ယွဥ္လိုက္ရင္ေတာ္ေတာ္ေလးကို သူ႔ရဲ႕စြမ္းေဆာင္ရည္က သိသာပါတယ္။ အထူးသျဖင့္ကေတာ့ static content ေတြႏွင့္ high concurrent requests (တစ္ၿပိဳင္နက္တည္းေတာင္းဆိုလာတဲ့ေတာင္းဆိုမႈ) ေတြကို ေျဖရွင္းတဲ့အခါမွာ  သူ႔ရဲ႕စြမ္းေဆာင္ခ်က္ကို သိသိသာသာ ျမင္ႏိုင္မွာျဖစ္ပါတယ္။

Nginx က ဘယ္လိုအလုပ္လုပ္သလဲဆိုေတာ့ သူ႔ကို စၿပီးတီထြင္လိုက္တဲ့ ရည္႐ြယ္ခ်က္အတိုင္းပဲ C10k ကို ေျဖရွင္းေပးႏိုင္ဖို႔ nginx က Low Memory Usage ႏွင့္ High Concurrency တို႔ကို ေပးစြမ္းၿပီးေတာ့ အလုပ္လုပ္ပါတယ္။ Nginx ရဲ႕လုပ္ေဆာင္ပုံကေတာ့ web server ကိုဝင္လာတဲ့ ေတာင္းဆိုခ်က္တစ္ခုခ်င္းစီကို အသစ္ေတာင္းဆိုခ်က္အျဖစ္ မလုပ္ေဆာင္ဘဲ asynchronous (တစ္ၿပိဳင္တည္းမလုပ္ေဆာင္ေသာ) ကိုအသုံးျပဳၿပီး ဝင္လာတဲ့ ေတာင္းဆိုမႈေတြကို Thread တစ္ခုတည္းမွာပဲ ကိုင္တြယ္ေျဖရွင္းပါတယ္။ Nginx မွာ Master Process တစ္ခုကေနၿပီးေတာ့ Worker Processes ေတြအမ်ားႀကီးကို ထိန္းခ်ဳပ္ထားႏိုင္ၿပီးေတာ့ အဲ့ Master Process တစ္ခုကေနပဲ က်န္တဲ့ လုပ္ေဆာင္ခ်က္ေတြကို ထိန္းထားၿပီး Master Worker မဟုတ္တဲ့ တျခား worker ေတြက တကယ့္လုပ္ေဆာင္ခ်က္ေတြကိုလုပ္ေဆာင္ေပးတာပါ။ ဘာလို႔လည္းဆိုေတာ့ သူက Asynchronous ျဖစ္ၿပီးေတာ့ ဝင္လာတဲ့ ေတာင္းဆိုခ်က္ေတြကို Master မဟုတ္တဲ့ worker တစ္ခုကေနၿပီး ေဆာင္႐ြက္ေပးႏိုင္ၿပီး တျခားဝင္လာတဲ့ ေတာင္းဆိုခ်က္ေတြကို ပိတ္ဆို႔ထားျခင္းမရွိတာေၾကာင့္ ျမန္ျမန္ဆန္ဆန္ႏွင့္ ထိထိေရာက္ေရာက္ေျဖရွင္းႏိုင္တာျဖစ္တယ္။ Nginx မွာပါတဲ့ Features ေတြကေတာ့ Reverse Proxy, Load Balancing, FastCGI, Websockets ႏွင့္ TLS/SSL စတာေတြပါဝင္ပါတယ္။

 

Nginx ကို ဘယ္လိုအသုံးျပဳရလဲဆိုေတာ့ သူ႔ကို ပထမဦးဆုံး installation လုပ္ရပါမယ္။ GNU/Linux မွာဆိုရင္ေတာ့ sudo apt-get install nginx ဆိုၿပီး Terminal မွာ ႐ိုက္ၿပီးသြင္းလိုက္ရင္ ရပါၿပီ။ MacOS မွာဆိုရင္ေတာ့ homebrew ကို အသုံးျပဳၿပီး သြင္းရပါမယ္။ Terminal မွာ brew install nginx ဆိုၿပီး ႐ိုက္သြင္းလိုက္ရင္ရပါၿပီ။ Nginx ရဲ႕ configuration files ေတြကို /etc/nginx/ ဆိုတဲ့လမ္းေၾကာင္းမွာ ေတြ႕ႏိုင္ၿပီးေတာ့ log files ေတြကိုေတာ့ /var/log/nginx ဆိုတဲ့လမ္းေၾကာင္းမွာ ေတြ႕ႏိုင္ပါတယ္။ Nginx ကိုသြင္းၿပီးသားလား၊ သြင္းတာေအာင္ျမင္လားကို စစ္ခ်င္ရင္ေတာ့ Terminal မွာ nginx -v လို႔ ႐ိုက္ၿပီးစစ္ၾကည့္ႏိုင္ပါတယ္။ Nginx ကိုဘယ္လို configure လုပ္ရတယ္ဆိုတာကို  ဒီ https://www.nginx.com/blog/setting-up-nginx/ ဘေလာ့မွာေလ့လာႏိုင္ပါတယ္။ Nginx ရဲ႕ configuration ေတြကိုထည့္ၿပီးသြားရင္ ကိုယ္ထည့္လိုက္တဲ့ အခ်က္အလက္ေတြကမွန္မမွန္ကို Terminal မွာ nginx -t သို႔မဟုတ္ nginx -T ဆိုၿပီး႐ိုက္စစ္ႏိုင္ပါတယ္။ nginx -t ကေတာ့ ကိုေရးလိုက္တဲ့ အခ်က္အလက္ေတြမွန္ရင္ ေအာင္ျမင္တဲ့အေၾကာင္းကို ျပန္ေျပာမွာျဖစ္ပါတယ္။ အကယ္၍ မွားေနတယ္ဆိုရင္ မွားတဲ့ေနရာကို ေျဖရွင္းဖို႔ျပမွာျဖစ္ပါတယ္။ Nginx ရဲ႕ configuration လုပ္ေဆာင္ခ်က္ေအာင္ျမင္တယ္ဆိုရင္ Nginx ကို reload လုပ္ေပးရပါမယ္။ သူ႔ကို reload လုပ္ဖို႔အတြက္ nginx -s reload ဆိုၿပီး Terminal မွာ႐ိုက္ေပးရပါမယ္။ အားလုံးၿပီးရင္ေတာ့ Browser မွာကိုယ္ထည့္ခဲ့တဲ့ server port အတိုင္း ႐ိုက္ၿပီးေတာ့ ကိုယ့္ရဲ႕ Project ကိုစမ္းသပ္ႏိုင္ၿပီျဖစ္ပါတယ္။

အခုဒီ Blog ေလးကိုဖတ္ၿပီး Nginx ရဲ႕ဆိုလိုရင္းနဲ႔ အသုံးျပဳပုံေတြကိုသိရွိၿပီး ဆက္လက္ေလ့လာႏိုင္ဖို႔ အေထာက္အကူျပဳမယ္လို႔ ေမွ်ာ္လင့္ရင္း ႏႈတ္ဆက္လိုက္ပါတယ္ခင္ဗ်။

Hello

Leave a Reply

Your email address will not be published. Required fields are marked *