وب سرور NGINX چیست؟

وب سرور NGINX چیست؟ (انجین اکس)

Nginx که انجین ایکس تلفظ می شود، یک وب سرور اوپن سورس است که از زمان موفقیت اولیه خود به عنوان وب سرور، اکنون به عنوان یک پروکسی معکوس، حافظه پنهان HTTP و متعادل کننده بار نیز استفاده می شود.

NGINX (انجین ایکس engine-x) وب سرور متن باز (Open Source) ، کارآمد و رایگان است. در سال ۲۰۰۲ و توسط Igor Sysoev ساخته و در سال ۲۰۰۴ برای نخستین بار در سطح عموم منتشر گردید و هم اکنون در حدود ۲۸.۳% از تمامی دامنه های فعال را میزبانی می کند.

 

زمان مطالعه: 3 دقیقه
بازدید: 751
پرسش و پاسخ: 0

NGINX به صورت "انجین-ایکس" تلفظ می شود. این یک وب سرور منبع باز، سریع، سبک و با کارایی بالا است که می تواند برای ارائه فایل های ثابت استفاده شود. NGINX به عنوان وب سرور محبوب پشت وب سرور آپاچی و IIS مایکروسافت در نظر گرفته شده است.

در نسخه اولیه خود، NGINX برای سرویس دهی وب HTTP عمل کرد. با این حال، امروزه به عنوان یک سرور پروکسی معکوس برای پروتکل های HTTP، HTTPS، SMTP، IMAP، POP3 نیز عمل می کند، از سوی دیگر، برای متعادل کننده بار HTTP، حافظه پنهان یا کش HTTP و پروکسی ایمیل برای IMAP، POP3 و نیز استفاده می شود.

NGINX تحویل محتوا و برنامه‌ها را بهبود می‌بخشد، امنیت را بهبود می‌بخشد و مقیاس‌پذیری و در دسترس بودن را برای شلوغ‌ترین وب‌سایت‌های اینترنت تسهیل می‌کند.

به طور خلاصه می توان گفت که Nginx فقط نوعی نرم افزار است که در وب سرورها برای ارائه درخواست های همزمان استفاده می شود.

قبلاً برای انجام این توابع آپاچی را در وب سرورها نصب می کردیم، اما در دنیا، در رشد و تقاضای چیزهای بیشتر در یک زمان، اصطلاح Concurrency به دنیا آمد و nginx برای همان کار راه اندازی شد.

Nginx توسط Igor Sysoev ایجاد شد و اولین انتشار عمومی آن در اکتبر 2004 به عنوان تلاشی برای پاسخ به مشکل C10k بود. جایی که C10k چالش مدیریت 10000 اتصال به طور همزمان بود. امروزه حتی اتصالات بیشتری وجود دارد که وب سرورها باید به آن رسیدگی کنند. به همین دلیل، nginx معماری رویداد محور و ناهمزمان را ارائه می دهد. این ویژگی nginx را به عنوان قابل اعتمادترین سرور برای مقیاس پذیری و سرعت تبدیل می کند.

برخی از شرکت‌های معروفی که از Nginx استفاده می‌کنند عبارتند از IBM، Google، Atlassian، Autodesk، GitLab، DuckDuckGo، T-Mobile، Microsoft، Adobe، Salesforce، VMware، LinkedIn، Cisco، Twitter، Apple، Intel، Facebook و بسیاری دیگر.

مطالعه بیشتر: HTTPS چیست؟

چرا از NGINX (انجین ایکس) استفاده کنیم؟

NGINX خدمات مختلفی مانند Reverse Proxy، Load Balancer و... ارائه می دهد. پروکسی معکوس در صورتی مفید است که چندین سرویس وب داشته باشیم که در پورت های مختلف گوش می دهند و برای تغییر مسیر درخواست ها به یک نقطه پایانی عمومی نیاز داریم. این به ما اجازه می‌دهد تا چندین نام دامنه را در پورت 80 میزبانی کنیم، در حالی که از ترکیبی از NodeJs، Go و java مختلف برای تأمین خدمات وب جداگانه در پشت صحنه استفاده می‌کنیم.

انجین ایکس می‌تواند ثبت، فهرست سیاه، متعادل‌سازی بار و ارائه فایل‌های استاتیک را مدیریت کند، در حالی که سرویس‌های وب روی کارهایی که باید انجام دهند تمرکز می‌کنند.

پیکربندی Nginx ساده تر از Apache httpd است. Nginx برای همزمانی بالا طراحی شده است و بسیار سریع است.

NGINX (انجین ایکس) چگونه کار می کند؟

قبل از دانستن فرآیند NGINX، بیایید نگاهی به نحوه عملکرد یک وب سرور بیندازیم. هنگامی که ما درخواست می کنیم یک صفحه وب را باز کنیم، مرورگر با سرور تماس می گیرد. سپس سرور به دنبال فایل های درخواستی صفحه می گردد و آن را برای مرورگر ارسال می کند. این تنها ساده ترین نوع کار برای درخواست است.

مثال بالا نیز به عنوان یک رشته در نظر گرفته می شود. به طور سنتی، وب سرورهایی مانند Apache برای هر درخواست یک رشته ایجاد می کنند، اما Nginx به این شکل کار نمی کند. Nginx با معماری ناهمزمان و رویداد محور عمل می کند. به طور هوشمندانه رویدادهای یک فرآیند را دنبال می کند.

انجین ایکس کار خود را به فرآیند کارگر و ارتباطات کارگر تقسیم کرد. در اینجا، اتصالات کارگر برای مدیریت درخواست انجام شده و پاسخ به دست آمده توسط کاربران در وب سرور استفاده می شود. در عین حال، این درخواست‌ها به فرآیند مادر منتقل می‌شوند که فرآیند کارگر نامیده می‌شود.

بیایید نمونه‌ای را برای سرور Nginx ببینیم که درخواست‌های فایل MP3 و MP4 همزمان را مدیریت می‌کند:

NGINX (انجین ایکس) چگونه کار می کند؟

از نمودار بالا، می بینیم که یک اتصال می تواند حدود 1024 اتصال را در یک زمان انجام دهد. این بهترین توانایی یک اتصال است. ممکن است بر اساس نوع سروری که ما داریم، اعداد «n» از فرآیند موجود در Nginx وجود داشته باشد و هر فرآیند کارهای مختلفی را انجام می دهد تا بتواند تعداد بیشتری درخواست همزمان را انجام دهد.

در نهایت، فرآیند درخواست‌ها را به فرآیند اصلی Nginx منتقل می‌کند که مستقیماً فقط به درخواست‌های منحصربه‌فرد پاسخ می‌دهد.

از آنجایی که اتصال می تواند تا 1024 درخواست مشابه را رسیدگی کند. به همین دلیل، Nginx می تواند هزاران درخواست را بدون هیچ مشکلی رسیدگی کند. همچنین به همین دلیل است که انجین ایکس به یک سرور عالی برای وب سایت های شلوغ مانند تجارت الکترونیک، موتورهای جستجو و ذخیره سازی ابری تبدیل شده است.

ویژگی های NGINX (انجین ایکس)

برخی از ویژگی های Nginx به شرح زیر است:

  • معکوس پروکسی با کش
  • IPv6
  • تعادل بار
  • Web Sockets
  • مدیریت فایل‌های استاتیک، فایل‌های فهرست، و فهرست‌سازی خودکار
  • پشتیبانی از FastCGI با کش
  • بازنویسی و تغییر مسیرURL

NGINX و NGINX Plus چه کاری می توانند برای شما انجام دهند؟

Nginx و Nginx plus بهترین وب سرورها و راه حل های تحویل برنامه هستند که توسط وب سایت های پر ترافیک مانند Netflix، Dropbox و Zynga استفاده می شوند. شلوغ ترین وب سایت ها مانند گوگل، نتفلیکس، توییتر، فیس بوک و غیره به Nginx و Nginx Plus برای ارائه ایمن، قابل اعتماد و سریع محتوای خود متکی هستند.

  • انجین ایکس باعث منسوخ شدن متعادل کننده های بار سخت افزاری می شود - Nginx منبع باز، ارزان تر و قابل تنظیم تر از متعادل کننده های بار سخت افزاری است و برای معماری های ابری مدرن طراحی شده است.

Nginx plus از پیکربندی مجدد پشتیبانی می‌کند و با ابزارهای DevOps مدرن برای نظارت آسان‌تر ادغام می‌شود.

  • NNginx یک ابزار چند منظوره است - با استفاده از Nginx، می‌توانیم از همان ابزاری مانند بار متعادل کننده، حافظه پنهان محتوا، پروکسی معکوس و سرور وب استفاده کنیم. این مقدار ابزار را همانطور که پیکربندی سازمان ما باید حفظ کند، به حداقل می رساند.

Nginx Plus شامل پاسخ سریع به پشتیبانی مشتری است، بنابراین ما به راحتی می توانیم برای تشخیص هر قسمت از پشته خود که از Nginx Plus و Nginx استفاده می کند کمک دریافت کنیم.

  • NGINX همچنان در حال تکامل است. در دهه گذشته، انجین ایکس در خط مقدم توسعه وب مدرن بوده است و به پیشروی در همه چیز از HTTP/2 تا پشتیبانی از خدمات میکرو کمک کرده است.

همانطور که توسعه و ارائه برنامه های کاربردی وب همچنان در حال تکامل است، NGINX Plus به طور مداوم ویژگی هایی را اضافه می کند تا تحویل بی عیب و نقص برنامه را فعال کند.

بیشتر بدانیم : امنیت سایت چیست و چگونه آن را تامین کنیم؟

تفاوت آپاچی و NGINX

آپاچی و NGINX دو بازیگر اصلی در تجارت وب سرور هستند که 5 درصد از ترافیک وب را از طریق اینترنت در بر می گیرند، اما با یکدیگر متفاوت هستند.

آپاچی - "سرور HTTP آپاچی" است. این یک نرم افزار وب سرور منبع باز و با کارایی بالا است که توسط بنیاد نرم افزار آپاچی توسعه و نگهداری می شود. آپاچی برای ایجاد یک وب سرور امن، قوی و کارآمد در سطح تجاری مطابق با استانداردهای فعلی HTTP طراحی شده است.

آپاچی به دلیل انعطاف پذیری، سادگی معماری، سازگاری با قدرت و پشتیبانی از چند پلتفرم، انتخاب اول در بین مدیران سرور باقی مانده است. تقریباً روی تمام سیستم عامل ها مانند ویندوز، یونیکس، OSX، NetWare و غیره قابل اجرا است اما معمولاً در ترکیب با لینوکس استفاده می شود.

آپاچی به ستون فقرات WWW (وب جهانی) تبدیل شد، واقعاً در صدر بازی بود، اما وقتی NGINX وارد تجارت شد، انتخاب مدیر سرور تغییر کرد.

بله، می‌توان گفت که انجین ایکس نمی‌تواند در بسیاری از زمینه‌ها با آپاچی غنی از ویژگی‌ها رقابت کند، اما وضعیت ناهمزمان و معماری تک رشته‌ای آن را به یک انتخاب هوشمندانه نسبت به آپاچی تبدیل می‌کند.

بیایید تفاوت بین Apache و NGINX را ببینیم:

  • Apache یک سرور HTTP منبع باز است در حالی که Nginx یک وب سرور ناهمزمان با کارایی بالا و منبع باز و سرور پروکسی معکوس است.
  • رفع اشکال، پشتیبانی، نگهداری و توسعه برنامه در سرور HTTP Apache توسط جامعه ای از کاربران از سراسر جهان مدیریت و نگهداری می شود و توسط بنیاد نرم افزار Apache هماهنگ می شود، در حالی که Nginx توسط شرکتی به همین نام که در سال 2011 تاسیس شد مدیریت می شود. .
  • تفاوت عمده بین این دو در نحوه رسیدگی به درخواست مشتری است. در حالی که Apache انواع مختلفی از ماژول‌های چند پردازشی را برای رسیدگی به درخواست‌های مشتری و ترافیک وب ارائه می‌کند، Nginx طوری طراحی شده است که چندین درخواست مشتری را به طور همزمان با حداقل منابع سخت‌افزاری مدیریت کند.
  • در آپاچی، تک رشته تنها با یک اتصال مرتبط است، در حالی که یک رشته در انجین ایکس می تواند چندین اتصال را مدیریت کند. تمام فرآیندها همراه با سایر اتصالات در یک حلقه رویداد قرار می گیرند و به صورت ناهمزمان مدیریت می شوند. این فرآیند حافظه کمتری مصرف می کند و در نتیجه عملکرد را افزایش می دهد.
  • سرور HTTP آپاچی دارای معماری چند رشته ای است که مقیاس پذیری ندارد. در حالی که Nginx از یک رویکرد رویداد محور ناهمزمان برای رسیدگی به درخواست های مشتری متعدد پیروی می کند. معماری رویداد محور آن برای تسهیل عملکرد بهتر حتی در ترافیک سنگین طراحی شده است.
  • سرور آپاچی محتوای ثابت را با استفاده از روش‌های مرسوم ارائه می‌کند و محتوای پویا را به صورت بومی در خود سرور وب پردازش می‌کند. از طرف دیگر، Nginx نمی تواند محتوای پویا را به صورت داخلی پردازش کند. برای اجرا به فرآیندهای خارجی متکی است.
تفاوت آپاچی و NGINX
آپاچی NGINX
آپاچی بر روی تمامی سیستم های یونیکس مانند لینوکس، BSD و غیره اجرا می شود و همچنین به طور کامل از ویندوز پشتیبانی می کند. Nginx بر روی سیستم های مدرن یونیکس اجرا می شود. با این حال پشتیبانی محدودی از ویندوز دارد.
Nginx بر روی سیستم های مدرن یونیکس اجرا می شود. با این حال پشتیبانی محدودی از ویندوز دارد. انجین ایکس از یک رویکرد رویداد محور برای ارائه درخواست های مشتری پیروی می کند.
آپاچی نمی تواند چندین درخواست را همزمان با ترافیک سنگین وب مدیریت کند. Nginx می تواند چندین درخواست مشتری را به طور همزمان و کارآمد با منابع سخت افزاری محدود انجام دهد.
آپاچی محتوای پویا را در خود وب سرور پردازش می کند. Nginx نمی تواند محتوای پویا را به صورت بومی پردازش کند.
آپاچی برای یک وب سرور طراحی شده است. Nginx هم یک وب سرور و هم یک سرور پروکسی است.
ماژول ها به صورت پویا بارگیری یا تخلیه می شوند که باعث انعطاف پذیری بیشتر می شود. از آنجایی که ماژول ها نمی توانند به صورت پویا بارگذاری شوند، باید در خود نرم افزار اصلی کامپایل شوند.
یک رشته تنها می تواند یک اتصال را پردازش کند. یک رشته می تواند چندین اتصال را مدیریت کند
عملکرد آپاچی برای محتوای استاتیک کمتر از Nginx است. Nginx می تواند به طور همزمان هزاران اتصال محتوای ثابت را دو برابر سریعتر از آپاچی اجرا کند و از حافظه کمی کمتری استفاده می کند.

نصب NGINX در مک

مراحل زیر برای نصب Nginx در سیستم عامل مک وجود دارد:

مرحله 1:  دانلود Homebrew  - برای نصب Nginx در سیستم عامل مک، Homebrew باید بر روی سیستم نصب شود. Homebrew یک مدیریت بسته برای سیستم عامل مک است که به ما اجازه می دهد تا برنامه های مختلف یونیکس را به راحتی نصب کنیم. اگر Homebrew ندارید برای نصب از لینک زیر استفاده کنید:

https://brew.sh

یا به سادگی دستور زیر را در ترمینال تایپ کنید:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  

مرحله 2: فهرست مخزن Homebrew را به روز کنید - فهرست مخزن نصب کننده بسته Homebrew را به روز کنید. این کار از طریق دستور brew update قابل انجام است.

$ brew update  

مرحله 3: Nginx را نصب کنید - نصب کننده بسته homebrew به نصب وب سرور انجین ایکس در macOS کمک می کند. برای نصب Nginx از دستور زیر استفاده کنید:

$ brew install nginx  

سرور Nginx در مکان /usr/local/cellar نصب خواهد شد. کل سرویس های اجرایی مربوط به شروع و توقف Nginx در پوشه bin دایرکتوری نصب ذخیره می شود.

وب سرور به طور پیش فرض به پورت شماره 8080 گوش می دهد. برای راه اندازی Nginx، از دستور زیر استفاده کنید:

$ launchctl load /usr/local/cellar/nginx/1.17.0/homebrew.mxcl.nginx.plist

و برای بررسی اینکه آیا nginx به درستی بر روی رایانه نصب شده است، localhost را در مرورگر تایپ کنید یا دستور زیر را در کنسول اجرا کنید:

$ curl http://127.0.0.1:8080  

برای توقف سرویس های Nginx از دستور زیر استفاده کنید:

$ launchctl unload /usr/local/cellar/nginx/1.17.0/homebrew.mxcl.nginx.plist   

آدرس‌های مهم:

افزودن تنظیمات در -> /usr/local/etc/nginx/servers/

پیکربندی پیش فرض -> /usr/local/etc/nginx/nginx.conf

گزارش‌ها در -> /usr/local/var/log/nginx/

وبروت پیش فرض -> /usr/local/var/www/

آدرس پیش فرض گوش دادن -> http://localhost:8080

نصب NGINX روی ویندوز

Nginx دارای باینری های از پیش کامپایل شده برای ویندوز است که شروع به کار را بسیار آسان می کند. اگر از قبل کامپایل نشده بود، باید یک کامپایلر با محیط کامل روی رایانه خود نصب کنیم. خوشبختانه، این مشکل نیست.

آخرین نسخه انجین ایکس (Nginx) برای ویندوز را از آدرس زیر دانلود کنید.

https://nginx.org/en/download.html

هنگامی که دانلود انجام شد، می توانیم آن را از هر یک از پوشه های خود استخراج کنیم. در اینجا، من از دایرکتوری c:\nginx-1.17.0 استفاده می کنم.

آدرس‌های مهم:

  • تنظیمات پیکربندی در -> c:\nginx-1.17.0\conf\
  • تنظیمات پیش فرض -> c:\ nginx-1.17.0\conf\nginx.conf
  • گزارش‌ها در -> c:\ nginx-1.17.0\logs
  • وبروت پیش فرض -> c:\ nginx-1.17.0\html\
  • آدرس پیش فرض گوش دادن -> http://localhost

اطمینان از نصب Nginx در ویندوز

برای اطمینان از اینکه Nginx به درستی کار می کند یا با موفقیت نصب شده است، خط فرمان را در ویندوز باز کنید و سپس عبارت زیر را تایپ کنید، مطمئن شوید که اگر در پوشه دیگری نصب کرده اید، مسیر محیط را به روز کنید.

اطمینان از نصب Nginx در ویندوز

باید بتوانیم به http://localhost برویم و صفحه پیش‌فرض «Welcome to Nginx» را ببینیم. اگر آن صفحه را ببینیم، پس می توانیم مطمئن شویم که انجین ایکس به درستی نصب شده است.

اطمینان از نصب Nginx در ویندوز

اگر به مباحث کاربری علاقمندید پیشنهاد میکنیم وایرفریم (wireframe) چیست؟ را مطالعه کنید

برای اجرای nginx از دستورات جدول زیر استفاده کنید:

راهنمای دستورات nginx در ویندوز
دستور شرح
nginx -s stop خاموش شدن سریع
nginx -s quit خاموش شدن استاندارد
nginx -s reload تغییر پیکربندی، شروع فرآیندهای کارگری جدید با پیکربندی جدید، خاموش کردن استاندارد فرآیندهای کارگر قدیمی
nginx -s reopen باز کردن مجدد فایل های گزارش

Nginx Plus چیست؟

Nginx یک وب سرور منبع باز است. و فوق العاده است. این به خوبی با بسیاری از باطن ها و سرورهای برنامه ادغام می شود.

Nginx Plus نسخه تجاری انجین ایکس است. Nginx Plus دارای ویژگی های بیشتری نسبت به Nginx است. مانند:

  • تداوم جلسه برای اطمینان از اینکه درخواست ها به همان سرور بالادستی هدایت می شوند.
  • متعادل کننده بار با امکانات کامل.
  • خدمات را با استفاده از DNS پیدا کنید.
  • کنترل بیشتر روی کش
  • Single sign-on
  • ماژول پویا WAF
  • بررسی طول فعال برای توقف ارسال درخواست به سرورهای معیوب
  • کنترل پهنای باند برای پخش MP4
  • خوشه بندی در دسترس بودن بالا برای جلوگیری از یک نقطه شکست

Nginx Plus برای توزیع‌های زیر در دسترس است:

  • RHEL/CentOS
  • Amazon Linux
  • Oracle Linux
  • FreeSSD
  • اوبونتو
  • دبیان
  • SUSE

و همچنین در IaaS زیر (زیرساخت به عنوان سرویس) موجود است:

  • Google Cloud Platform (GCP)
  • Amazon Web Services (AWS)
  • Microsoft Azure

بیشتر بدانیم : انجام سئو برای سایت

بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده