Introduction to Nginx: The Powerful Open-Source Web Server
අපි අද මේ post එකෙන් බලමු Nginx කියන්නෙ මොකක්ද කියලා.
සරලවම Nginx කියන්නෙ large-scale websites, content providers, cloud service provider ලා වගේ use කරන powerful web server එකක්. මේක Light weight ඒ වගේම open source. Reverse proxy එකක්, load balancer එකක්, security layer එකක් විදියට අපිට Nginx use කරන්න පුලුවන්. ඒවගේම HTTP caching වලටත් use කරන්න පුලුවන්. Traditional web server එකකින් මේ වගේ දේවල් කරගන්න බෑ. ඒවගේම configure කරන්නත් ලේසි.
අපි මුලින්ම බලමු web server එකක් කියන්නෙ මොකක්ද කියලා.
සරලවම web server එකක් කියන්නෙ internet or intranet හරහා client ලට web pages serve කිරීමට use කරන computer එකක් මත run වෙන software එකක්. මේක client ලගෙන් එන incoming request වලට listen කරලා ඒ request වලට අදාලව response යවනවා. මේ response එක HTML page එකක්, image එකක්, video එකක් හෝ වෙන ඕනෑම file එකක් වෙන්න පුලුවන්.
අපි දැන් බලමු Nginx කියන්නෙ මොකක්ද කියලා.
Nginx කියන්නෙ client සහ server එක අතර අතරමැදියෙක් විදියට ඉන්න ගමන් client ගෙන් එන request, server එකට යවන්න කලින් process කරන්න පුලුවන් web server එකක්. මේ architecture එක නිසා මේක proxy server එකක් විදියටත් use කරන්න පුලුවන්.
අපි proxy server එක ගැනත් ටිකක් බලමු. Proxy server ප්රධාන වර්ග දෙකක් තියෙනවා.
1. Forward Proxy
2. Reverse Proxy
Forward Proxy එකක් අපි හදන්නෙ client සහ internet එක අතර. Internet එකේ තියෙන resource එකක් access කරන්න client යවන request එක මුලින්ම යන්නෙ මේ forward proxy එකට. ඊට පස්සෙ proxy එක මේ request එක යවනවා client වෙනුවෙන්.
Corporate network වලදි මේ proxy එක ගොඩක් use වෙනවා. මේකෙන් internet access එක monitor and control කරන්න පුලුවන්. ඒවගේම regional restrictions bypass කරන්නත් anonymously content access කරන්නත් මේක use කරන්න පුලුවන්.
Reverse Proxy එකෙන් වෙන්නෙ මේකෙ opposite එක. Reverse Proxy එක තියෙන්නෙ client and server එක අතර. Client ගෙන් එන request මේ reverse proxy එකට ගිහින් ඒවා intercept කරලා අදාල server එකට යවන එක තමයි reverse proxy එකෙන් වෙන්නෙ. ඒවගේම server එකෙන් එන response එන්නෙත් reverse proxy එක හරහා.
Summary එකක් විදියට ගත්තොත් මේ proxy වර්ග දෙකම අතරමැදියෙක් විදියට වැඩ කරනවා. Clients ලා internet එකේ තියෙන resources use කරන්න forward proxy එක use කරනවා. Clients ලගෙන් එන requests, backend servers එකක් හෝ කිහිපයක් අතර distribute කරන්න servers මගින් reverse proxy එක use කරනවා.
අපි දැන් බලමු Nginx වල වාසි.
1. Enhanced performance : මේකට අවම resources ප්රමාණයකි විශාල concurrent connection සහ request ප්රමානයක් handle කරන්න පුලුවන්. High traffic websites වලට හොදයි.
2. Load balancing : මේක ටිකක් ලොකු topic එකක්. සරලවම මේකෙදි වෙන්නෙ incoming network traffic එක servers ගොඩක් අතරෙ distribute කරන එක. එතකොට resources utilization එක optimize කරගන්න, response time එක අඩු කරන්න වගේම throughput එක වැඩි කරන්න පුලුවන්.
Nginx මගින් මේකට round robin algorithm එක, IP hash, least connection වගේ techniques use කරනවා.
3. Caching : Nginx මගින් static සහ dynamic content cache කරන්න පුලුවන්. මේ cached content එක in memory හරි disk එකක හරි නැත්තම් මේ විදි දෙකෙන්ම store කරන්න පුලුවන්. මෙමගින් response time එක අඩු කරගන්න පුලුවන.
4. Security features : අපිට Nginx use කරලා rate limiting, access control, content filtering වගේ දේවල් කරගන්න පුලුවන්. ඒවගේම malicious traffic එක වලක්වන්නත් cross-site scripting , SQL injection වගේ attacks වලක්වන්නත් අපිට Nginx use කරලා පුලුවන්. Rate limiting වලින් අපිට DDoS attack වලක්වගන්න පුලුවන්.
5. HTTP/2 Support : Nginx වල HTTP/2 වලට built-in support එකක් තියෙනවා. ඒකෙන් අපිට server push, request multiplexing, header compression වගේ HTTP/2 වල තියෙන අලුත් features use කරන්න පුලුවන්. මේකෙනුත් page load time එක අඩු කරලා user experience එක improve කරන්න පුලුවන්.
6. Ease of congratulation : Nginx වල තියෙන modular architecture එක නිසා මුලු server එකම rebuild කරන්නෙ නැතුව අපිට functionality add or remove කරන්න පුලුවන්.
අපි හැමෝම දන්න Airbnb, Dropbox, Netflix, Pinterest වගේ services එයාලගෙ performance වැඩි කරගන්න මේ Nginx use කරනවා. Apache HTTP server එක Nginx වෙනුවට බහුලව use කරන alternative එකක්. ඒක ගැනත් ටිකක් හොයලා බලන්න. ආයිත් වෙන post එකකින් හම්බවෙමු.
AI Intern | UoM | Pythonista | Blogger
1yThanks. Very Useful
Full Stack Web Developer • Generative AI Enthusiast • BSE Undergraduate
1yVery useful
DevOps Engineer at Ideahub | AWS
1yThank you for sharing
Senior Cloud Engineer @ MIT esp | 4 x AWS Certified | Terraform Certified | 2 x FinOps certified | AWS | Automation | AI | Security | FinOps | Serverless |DevOps | IAC |BSc (Hons) EEE | AMIE(SL) | A.Eng(ECSL) | UOP
1ygreat!
Associate Software Engineer @ XGen | Freelancer | Full Stack Developer | React & Node.js | Fintech Enthusiast | Building Scalable & Secure Apps
1yThank You Brother❤️