برای هرکسی که توی حوزه وب فعالیت میکنه، واضح و مبرهنه که nginx یه یار جدایی ناپذیره که گاه و بیگاه تحت هر عنوانی بهش نیاز پیدا میکنی. یکی واسه وب سرور، یکی reverse proxy و ...
میخوام براساس کتاب
NGINX Cookbook | Advanced Recipes for High-Performance Load Balancing
اثر Derek DeJonghe یه مجموعه آموزشها و نکاتی رو راجعبه nginx بنویسم. البته توصیه میکنم خود کتاب رو بخونید ولی خب در حد توان سعی میکنم نکاتی که ممکنه توی کتاب هم نباشه و مدنظرم هست رو بنویسم(البته به دلایل واضح از نوشتن راجب nginx plus صرفنظر میکنم).
سال ۱۹۹۹ بود که Igor Sysoev برای حل مشکل C10K (مسالهای که برای هندل کردن همزمان ده هزار کانکشن توسط سرور بهوجود اومده بود) nginx رو ساخت. nginx با ساختار event‑driven و asynchronous که داشت انقلاب بزرگی توی صنعت وبسرورها بهوجود آورد و تبدیل به سریعترین وبسرور دنیا شد!
سال ۲۰۰۴ با اوپن سورس کردن nginx سرعت رشدش به شدت افزایش پیدا کرد و ایگور شرکت NGINX, Inc. رو بنیاد نهاد که هم رشد nginx و هم فروش nginx plus (که نسخه تجاری nginx با خیلی قابلیتهای خفنتری هست) رو توسعه بده و در نهایت سال ۲۰۱۹ این شرکت بخشی از شرکت F5, Inc. شد و هنوز خیلی قوی درحال رشده. امروزه nginx میتونه هزاران هزار کانکشن همزمان رو مدیریت کنه و وبسایتهای زیادی توی دنیا متکی بهش هستن.
هدف nginx ایجاد سریعترین وبسرور موجود بود و حفظ این برتری همچنان یکی از اهداف اصلی این پروژه است. nginx فی کما سابق Apache و بقیه وبسرورها رو توی بنچ مارکای عملکرد وبسرور شکست میده. با این حال، از زمان انتشار اولیه nginx، وب سایت ها از صفحات ساده HTML به محتوای داینامیک و چندوجهی گسترش پیدا کردن و البته nginx هم همراه باهاشون رشد کرده و الان از تمام اجزای وب مدرن، ازجمله WebSocket، HTTP/2، gRPC، و استریم چندین فرمت ویدیویی (HDS، HLS، RTMP و غیره) پشتیبانی میکنه.
اگرچه nginx به عنوان سریعترین وبسرور دنیا مشهور شد ولی معماری زیربنایی مقیاسپذیرش برای خیلی از وظایف حوزه وب که فراتر از ارایه محتواست ایدهآله. از اونجایی که nginx میتونه حجم خیلی بالایی از اتصالات همزمان رو مدیریت کنه، معمولاً به عنوان یک پروکسی معکوس(reverse proxy) و load balancer برای مدیریت ترافیک ورودی و توزیعش به سرورهای بالادستی کندتر(از سرورهای پایگاهداده قدیمی گرفته تا میکروسرویسها) استفاده میشه.
درحال حاضر nginx یکی از پراستفادهترین و پرکاربردترین وب سرورها توی دنیاست. یکی از دلایل محبوبیت nginx بدون شک داشتن قابلیت load balancing و reverse proxy برای پروتکل HTTP و همچنین خیلی دیگه از پروتکلهای شبکه هست.
توی پستهای بعدی از نصب nginx تا کلی کارای خفن دیگه که میشه باهاش انجام داد رو به مرور مینویسم و سعی میکنم از تجارب خودمم با nginx صحبت کنم.