محدثه سالم
محدثه سالم
خواندن ۲ دقیقه·۳ ماه پیش

مقدمه‌ای درباره Nginx

نرم‌افزار Nginx در واقع یک وب‌سرور (Web Server) است که می‌تواند به‌عنوان پراکسی معکوس (Reverse Proxy)، توزیع‌کننده بار (Load Balancer) یا کش وب (Web Cache) نیز مورد استفاده قرار گیرد. در این مقاله، عملکردهای مختلف Nginx را به‌صورت خلاصه مرور می‌کنیم. امیدوارم براتون مفید باشه.

تعریف وب‌سرور (Web Server)

وب‌سرور یا سرور HTTP نرم‌افزاری است که بر روی یک سرور سخت‌افزاری نصب می‌شود و درخواست‌های ارسالی از کلاینت‌ها را در بستری مانند HTTP دریافت و به آنها پاسخ می‌دهد. این پاسخ‌ها یا به صورت ایستا (Static) از قبل در مسیری روی سرور ذخیره شده‌اند یا به صورت پویا (Dynamic) توسط یک برنامه وب تولید می‌شوند و به سمت کلاینت‌ها ارسال می‌گردند. به‌عنوان مثال، فایل‌های تصویری، ویدئوها یا فایل‌های CSS و JavaScript می‌توانند به‌صورت ایستا روی سرور ذخیره و توسط وب‌سرور به کلاینت ارسال شوند. اما اطلاعاتی مانند محصولات خریداری شده توسط کاربر، دانشجویان برتر ترم جاری یا آگهی‌های منقضی‌شده باید به‌صورت لحظه‌ای و پویا از دیتابیس‌ها گردآوری و در قالب یک پاسخ مناسب به کلاینت‌ها ارسال شوند.

تعریف پراکسی معکوس (Reverse Proxy)

یک سرور پراکسی در حالت عادی واسطه‌ای میان یک کلاینت و سایر سرورها است. این سرور واسط، تمام درخواست‌های کلاینت را دریافت و به سرورهای مقصد ارسال می‌کند. اما پراکسی معکوس برعکس این عملکرد است؛ به‌جای اینکه مانند پراکسی معمولی (Forward Proxy) درخواست‌های کلاینت به سرورهای مختلف ارسال شود، پراکسی معکوس درخواست‌های تمام کلاینت‌ها را دریافت کرده و به یک سرور خاص ارسال می‌کند.

تعریف توزیع‌کننده بار (Load Balancer)

با افزایش تعداد درخواست‌های ارسالی به یک سرور، منابع بیشتری از سرور اشغال می‌شود و بار (Load) آن افزایش می‌یابد. با افزایش بار روی سرور، عملکرد آن دچار افت شده و پاسخ‌دهی به درخواست‌ها کند می‌شود. در این شرایط سرورهای فعلی پاسخگوی نیاز نیستند و باید سرورها را توسعه دهیم (Scale). شاید اولین راه‌حل افزایش قدرت پردازنده و حافظه باشد که به این روش "اسکیل عمودی" (Vertical Scaling) گفته می‌شود. اما روش بهتر معمولاً استفاده از "مزرعه سرور" (Server Farm) است که در آن چندین سرور با توان متوسط به‌جای یک سرور قوی استفاده می‌شود و به این روش "اسکیل افقی" (Horizontal Scaling) گفته می‌شود. در این حالت، توزیع‌کننده بار (Load Balancer) با قرار گرفتن در جلوی ورودی مزرعه سرور، درخواست‌های ورودی را بین چند سرور توزیع می‌کند.

تعریف کش وب (Web Cache)

ارائه محتوای ایستا توسط وب‌سرورها بسیار ساده‌تر و سریع‌تر از محتوای پویا است. برای تولید محتوای پویا معمولاً باید کوئری‌های زمان‌بر به دیتابیس‌ها ارسال شود یا الگوریتم‌های پیچیده‌ای اجرا شوند. به همین دلیل، تولید چنین محتوایی کندتر است و منابع سخت‌افزاری بیشتری از سرور را اشغال می‌کند. کش وب یا کش HTTP محتوای پویا که برای درخواست‌های پرتکرار تولید شده را به‌صورت ایستا ذخیره می‌کند و در درخواست‌های بعدی از آن استفاده می‌شود. این کار باعث می‌شود که پاسخ‌دهی به این درخواست‌ها بسیار سریع‌تر انجام شده و همچنین بار (Load) روی سرور به‌طور چشمگیری کاهش یابد.

سرورnginxsoftware engineering
صفحه ی لینکدین من: https://www.linkedin.com/in/mohaddese-salem-27388318b
شاید از این پست‌ها خوشتان بیاید