Nginx چیست؟
Nginx یک نرمافزار متنباز (Open Source) است که برای ارائهی بیشترین کارایی و پایداری ممکن طراحی شده است.
این وب سرور به گونهای بهینه شده که بتواند تعداد بسیار زیادی درخواست همزمان را با حداقل مصرف منابع، پردازش کند چیزی که سرورهای توسعهای در فریمورکهای مختلف (مثل Django یا Node.js) در محیطهای تولید (Production) قادر به انجام مؤثر آن نیستند.
تعریف وب سرور (Web Server)
هر زمان که شما در مرورگر خود یک آدرس اینترنتی (URL) را وارد میکنید و کلید Enter را میزنید، درواقع درخواستی برای محتویات آن آدرس ارسال میکنید. این محتویات در کامپیوترهای از راه دور قرار دارند و پس از دریافت درخواست شما، پاسخ مناسب را بازمیگردانند.

وب سرور ها کامپیوترهایی هستند که صفحات وب درخواستشده را تحویل میدهند. هر وب سرور شامل یک آدرس IP و یک نام حوزه (Domain Name) است.
به عنوان مثال، اگر در مرورگر وارد کنید:
www.hidata.org/blog/
- قسمت
www.hidata.orgنام دامنهی وب سرور است، - و
/blogصفحهای است که درخواست مشاهدهی آن را کردهاید.
وب سرور این درخواست را دریافت کرده و سپس مطابق با ساختار فایلها پاسخی را بازمیگرداند.
در مقاله “Web Server چیست؟” به صورت کامل وب سرور را تعریف کرده ایم و در آن چند وب سرور محبوب و پر استفاده در جهان را بررسی کرده ایم.
دلایل استفاده از وب سرور اختصاصی
سرورهای توسعهای فریمورکها برای تست و توسعه مناسباند، اما در محیط Production ممکن است:
- در برابر ۳۰–۴۰ درخواست ساده هم دچار کندی یا قطع سرویس شوند،
- و توان پاسخگویی به هزاران درخواست همزمان را نداشته باشند.
Nginx به عنوان یک وب سرور اختصاصی این محدودیتها را برطرف کرده و راهکاری بهینه برای مدیریت هزاران درخواست همزمان ارائه میدهد.
ویژگیهای اصلی Nginx
Nginx میتواند:
- پاسخ به درخواستهای HTTP را انجام دهد.
- به عنوان سرور پروکسی معکوس (Reverse Proxy) عمل کند.
- عملیات Caching را برای سرعت بیشتر ارائه دهد.
- درخواستها را در چندین سرور توزیع کند (Load Balancing).
- به عنوان پروکسی برای ایمیلها (IMAP, POP3, SMTP) نیز عمل کند.
- از ساختار بدون Thread و مبتنی بر رویداد استفاده کند که مصرف CPU را بسیار پایین میآورد.
- قابلیت مقیاسپذیری و بهروزرسانی بدون توقف سرویس را فراهم آورد.
معماری Nginx مبتنی بر یک ساختار Master-Slave (یا Master-Worker) است که در آن یک فرآیند اصلی (Master) بار کاری را بین فرآیندهای کارگر (Worker Processes) تقسیم میکند و با استفاده از کش و حافظه پاسخ به درخواستها را بهینه میسازد.
پیکربندیهای پایه در Nginx
پیکربندیهای اصلی Nginx در فایل nginx.conf قرار دارد و شامل بخشهای (Contexts) مختلفی است:
Worker Processes
این مقدار نشاندهندهی تعداد فرآیندهای کارگر (Worker) است که Master کنترل میکند. هر Worker بطور تکنخی (Single Thread) عمل میکند.
به عنوان مثال، در یک پردازندهی ۸ هستهای، میتوان این عدد را ۸ قرار داد تا بهرهوری بیشتری داشته باشید.
Worker Connections
این گزینه مشخص میکند که هر Worker میتواند با چند کلاینت همزمان ارتباط برقرار کند.
اگر مقدار پیشفرض ۵۱۲ باشد و شما ۸ Worker داشته باشید، حداکثر توانایی پاسخ به ۴۰۹۶ اتصال همزمان خواهید داشت.
Access Log و Error Log
- access_log: فعالیت همهی بازدیدکنندگان و درخواستهای دریافتی را ثبت میکند.
- error_log: خطاها و مشکلات سرور را برای اشکالزدایی (Debug) ثبت میکند.
Gzip
با فعالسازی این گزینه میتوان پاسخها را فشرده کرد تا حجم دادههای خروجی کاهش یابد. توجه داشته باشید که این کار به مصرف CPU اضافه میانجامد، بنابراین برای موارد سنگین کاربردیتر است.
مراحل نصب Nginx
نصب در لینوکس (Ubuntu و توزیعهای مشابه)
ابتدا بستههای نرمافزاری سیستم را بهروزرسانی کنید:
sudo apt-get update

سپس Nginx را نصب کنید:
sudo apt-get install nginx

فایروال را فعال کنید:
sudo ufw enable

نسخه نصبشده را بررسی کنید تا از نصب موفقیتآمیز مطمئن شوید:
nginx -v

برای باز کردن دسترسیهای HTTP و HTTPS در فایروال (به سرور برای دریافت درخواستها):
sudo ufw allow 'Nginx Full'
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
وضعیت قوانین فایروال را بررسی کنید:
sudo ufw status

سپس با دستور زیر وضعیت سرویس Nginx را مشاهده کنید:
sudo systemctl status nginx

در صورتی که Active (running) درج شده باشد، یعنی سرور به درستی در حال اجراست.
نصب در ویندوز
- نسخهی اصلی (Mainline) Nginx را از سایت رسمی آن دانلود کنید.
- فایل زیپ را در مکان دلخواه باز کنید و پوشه را باز کنید.
- برنامهی Nginx را اجرا کنید و اجازهی اعمال تنظیمات فایروال را بدهید.
- اگر مرورگر را باز کنید و به این آدرس مراجعه کنید، صفحهی پیشفرض “Welcome to Nginx” بهمعنی اجرای صحیح سرور است.
http://localhost/
در فایل پیکربندی (nginx.conf) میتوانید تنظیمات مربوط به روت صفحات، مسیرها و سایر تنظیمات HTTP را مشاهده یا تغییر دهید.
Nginx یک وب سرور متنباز و قدرتمند است که برای قابلیت پاسخگویی بالا، پایداری، و پردازش همزمان تعداد زیادی درخواست طراحی شده است.
این سرور نه تنها بهعنوان یک وبسرور HTTP استفاده میشود، بلکه به عنوان Reverse Proxy، Load Balancer، و سیستم Cache نیز کاربرد دارد — که همه این موارد باعث افزایش کارایی و مقیاسپذیری در برنامههای وب میشود.