DevOps

راه اندازی Nginx و لودبالانس برای وب سایت و API

راه اندازی Nginx و لودبالانس یعنی ترافیک ورودی از یک نقطه دریافت شود، SSL در همان جا تمام شود و درخواست ها بین چند سرور یا کانتینر پخش شود. تیم فنی پیکوهاست پیکربندی را روی سرور شما می نویسد و آزمایش می کند.

در یک نگاه

راه اندازی Nginx و لودبالانس یعنی قرار دادن Nginx جلوی برنامه ها به عنوان reverse proxy، تعریف upstream و health check و خاتمه SSL. وقتی یک سرور برای ترافیک کافی نیست یا چند سرویس پشت یک دامنه دارید لازم است. تیم فنی پیکوهاست پیکربندی را می نویسد و بدون قطعی reload می کند.

سطح های خدمت

هر سطح همه ی کارهای سطح قبلی را دارد. قیمت دقیق بعد از بررسی نیاز و حجم کار اعلام می شود.

پکیج پایه

قیمت پس از بررسی

۱۰ کار انجام می شود

  • بررسی اولیه
  • بررسی وضعیت فعلی Nginx و پورت ها
  • ثبت برنامه ها و دامنه هایی که پشت Nginx می روند
  • reverse proxy
  • تنظیم proxy_pass برای هر برنامه
  • تنظیم هدرهای Host و آدرس واقعی کاربر
  • SSL
  • نصب گواهی SSL و فعال سازی HTTPS
  • ریدایرکت HTTP به HTTPS
  • لاگ و اعمال تغییر
  • گرفتن نسخه پشتیبان از پیکربندی قبلی
  • آزمایش پیکربندی با nginx -t
  • اعمال تغییرات با reload بدون قطع اتصال ها
  • تست و تحویل
  • تحویل فایل های پیکربندی
ثبت سفارش

پکیج استاندارد

قیمت پس از بررسی

۲۰ کار انجام می شود

  • همه موارد پکیج پایه و موارد زیر
  • بررسی اولیه
  • بررسی وضعیت فعلی Nginx و پورت ها
  • ثبت برنامه ها و دامنه هایی که پشت Nginx می روند
  • بررسی نحوه ذخیره سشن کاربران
  • هماهنگی طرح پیکربندی با شما
  • reverse proxy
  • تنظیم proxy_pass برای هر برنامه
  • تنظیم هدرهای Host و آدرس واقعی کاربر
  • قرار دادن چند برنامه پشت یک دامنه
  • لودبالانس
  • تعریف گروه سرورهای upstream
  • انتخاب روش پخش بار مثل round robin یا least_conn
  • حذف خودکار سرور ناسالم با max_fails و fail_timeout
  • SSL
  • نصب گواهی SSL و فعال سازی HTTPS
  • ریدایرکت HTTP به HTTPS
  • کش
  • کش پاسخ های مناسب با proxy_cache
  • لاگ و اعمال تغییر
  • گرفتن نسخه پشتیبان از پیکربندی قبلی
  • آزمایش پیکربندی با nginx -t
  • اعمال تغییرات با reload بدون قطع اتصال ها
  • جدا کردن لاگ دسترسی و خطا برای هر دامنه
  • تست و تحویل
  • تحویل فایل های پیکربندی
  • آزمایش پخش بار و خاموش کردن یکی از سرورها
  • یادداشت افزودن سرور یا دامنه جدید
ثبت سفارش

پکیج کامل

قیمت پس از بررسی

۲۷ کار انجام می شود

  • همه موارد پکیج استاندارد و موارد زیر
  • بررسی اولیه
  • بررسی وضعیت فعلی Nginx و پورت ها
  • ثبت برنامه ها و دامنه هایی که پشت Nginx می روند
  • بررسی نحوه ذخیره سشن کاربران
  • هماهنگی طرح پیکربندی با شما
  • reverse proxy
  • تنظیم proxy_pass برای هر برنامه
  • تنظیم هدرهای Host و آدرس واقعی کاربر
  • قرار دادن چند برنامه پشت یک دامنه
  • لودبالانس
  • تعریف گروه سرورهای upstream
  • انتخاب روش پخش بار مثل round robin یا least_conn
  • حذف خودکار سرور ناسالم با max_fails و fail_timeout
  • تنظیم sticky session در صورت نیاز برنامه
  • SSL
  • نصب گواهی SSL و فعال سازی HTTPS
  • ریدایرکت HTTP به HTTPS
  • تنظیم پروتکل ها و cipher های امن
  • کش
  • کش پاسخ های مناسب با proxy_cache
  • جلوگیری از کش صفحات حساس
  • لاگ و اعمال تغییر
  • گرفتن نسخه پشتیبان از پیکربندی قبلی
  • آزمایش پیکربندی با nginx -t
  • اعمال تغییرات با reload بدون قطع اتصال ها
  • جدا کردن لاگ دسترسی و خطا برای هر دامنه
  • بررسی لاگ ها بعد از اعمال برای خطای پنهان
  • تست و تحویل
  • تحویل فایل های پیکربندی
  • آزمایش پخش بار و خاموش کردن یکی از سرورها
  • یادداشت افزودن سرور یا دامنه جدید
  • مستند کردن ساختار پخش بار
  • آموزش کوتاه مدیریت روزمره Nginx
  • بررسی دوباره رفتار پخش بار پس از تحویل
ثبت سفارش

کدام سطح مناسب شماست

پایه

برای کسی که یک برنامه یا چند دامنه را فقط پشت Nginx با SSL و reverse proxy می خواهد.

استاندارد

برای سایت یا API با چند سرور که پخش بار، کش و آزمایش خاموش شدن یک سرور لازم دارد.

کامل

برای ساختار مهم که علاوه بر لودبالانس، سخت سازی، لاگ جدا، مستندات و آموزش مدیریت روزمره هم می خواهد.

مقایسه کامل پکیج ها

کارپایهاستانداردکامل
بررسی اولیه
بررسی وضعیت فعلی Nginx و پورت ها✓✓✓
ثبت برنامه ها و دامنه هایی که پشت Nginx می روند✓✓✓
بررسی نحوه ذخیره سشن کاربران-✓✓
هماهنگی طرح پیکربندی با شما-✓✓
reverse proxy
تنظیم proxy_pass برای هر برنامه✓✓✓
تنظیم هدرهای Host و آدرس واقعی کاربر✓✓✓
قرار دادن چند برنامه پشت یک دامنه-✓✓
لودبالانس
تعریف گروه سرورهای upstream-✓✓
انتخاب روش پخش بار مثل round robin یا least_conn-✓✓
حذف خودکار سرور ناسالم با max_fails و fail_timeout-✓✓
تنظیم sticky session در صورت نیاز برنامه--✓
SSL
نصب گواهی SSL و فعال سازی HTTPS✓✓✓
ریدایرکت HTTP به HTTPS✓✓✓
تنظیم پروتکل ها و cipher های امن--✓
کش
کش پاسخ های مناسب با proxy_cache-✓✓
جلوگیری از کش صفحات حساس--✓
لاگ و اعمال تغییر
گرفتن نسخه پشتیبان از پیکربندی قبلی✓✓✓
آزمایش پیکربندی با nginx -t✓✓✓
اعمال تغییرات با reload بدون قطع اتصال ها✓✓✓
جدا کردن لاگ دسترسی و خطا برای هر دامنه-✓✓
بررسی لاگ ها بعد از اعمال برای خطای پنهان--✓
تست و تحویل
تحویل فایل های پیکربندی✓✓✓
آزمایش پخش بار و خاموش کردن یکی از سرورها-✓✓
یادداشت افزودن سرور یا دامنه جدید-✓✓
مستند کردن ساختار پخش بار--✓
آموزش کوتاه مدیریت روزمره Nginx--✓
بررسی دوباره رفتار پخش بار پس از تحویل--✓

چه کارهایی انجام می شود

reverse proxy

تنظیم proxy_pass و هدرهای لازم مثل Host و آدرس واقعی کاربر

upstream

تعریف گروه سرورها و روش پخش بار، مثل round robin یا least_conn

health check

حذف خودکار سرور ناسالم از چرخه با max_fails و fail_timeout

TLS termination

نصب گواهی SSL و تنظیم HTTPS، ریدایرکت HTTP به HTTPS و پروتکل های امن

کش پایه

کش پاسخ های مناسب با proxy_cache و جلوگیری از کش صفحات حساس

reload

آزمایش پیکربندی و nginx -s reload یا systemctl reload nginx

لاگ

جدا کردن لاگ دسترسی و خطا برای هر دامنه

چه زمانی به این خدمت نیاز دارید

  • یک سرور زیر بار ترافیک کند می شود و می خواهید سرور دوم اضافه کنید.
  • هنگام به روزرسانی یک سرور نمی خواهید سایت قطع شود.
  • چند برنامه یا کانتینر روی پورت های مختلف دارید و می خواهید همه از پورت 443 و با دامنه مشخص در دسترس باشند.
  • گواهی SSL را می خواهید یک جا مدیریت کنید و نه در هر برنامه.
  • پاسخ های ثابت را می خواهید کش کنید تا فشار روی برنامه کمتر شود. برای ارتباط با کارایی، بهینه سازی سرعت را هم ببینید.

مراحل کار

  1. ۱

    در تیکت ساختار فعلی، تعداد سرورها یا کانتینرها، دامنه ها و نوع برنامه را می نویسید.

  2. ۲

    تیم فنی وضعیت فعلی Nginx و پورت ها را بررسی و طرح پیکربندی را با شما هماهنگ می کند.

  3. ۳

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

  4. ۴

    SSL تنظیم و پیکربندی با nginx -t آزمایش می شود.

  5. ۵

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

  6. ۶

    فایل های تنظیمات و توضیح مدیریت روزمره تحویل داده می شود.

چه چیزی از شما لازم داریم

  • آدرس سرورها و برنامه هایی که باید پشت Nginx قرار بگیرند، همراه پورت و پروتکل آن ها.
  • دسترسی مدیریتی که از طریق فیلدهای خصوصی تیکت یا یک حساب موقت داده می شود. رمز root را در متن عادی تیکت ننویسید. حساب موقت بعد از اتمام کار حذف می شود.
  • دامنه ها و دسترسی به DNS برای هدایت دامنه به سرور و صدور SSL.
  • اگر سشن کاربر روی سرور ذخیره می شود، توضیح نحوه ذخیره آن، چون در لودبالانس باید sticky session یا ذخیره مشترک در نظر گرفته شود.
  • فایروال را هم بررسی می کنیم. برای محافظت از خود سرور محافظت با فایروال را ببینید.

چه چیزی تحویل می دهید و چه چیزی تضمین نمی شود؟

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

لودبالانس خودش مشکل برنامه را حل نمی کند. اگر برنامه روی چند سرور درست کار نکند، مثلا فایل ها یا سشن ها محلی باشند، باید آن بخش اصلاح شود. خود Nginx هم اگر تنها یک سرور جلوی برنامه ها باشد، یک نقطه شکست جدید است و برای حذف آن باید طراحی جداگانه ای انجام شود. تغییر کد برنامه و اصلاح خطاهای آن در این خدمت نیست. خطاهای رایج بعد از نصب را در رفع خطای 502 در Nginx و رفع خطای 504 در Nginx می توانید ببینید.

سوالات پرتکرار

reload با restart چه فرقی دارد؟
با reload، Nginx تنظیمات جدید را می خواند و فرایندهای قدیمی اتصال های فعال را تمام می کنند، پس قطعی ندارد. با restart خود سرویس متوقف و دوباره بالا می آید. به همین دلیل پس از nginx -t همیشه از reload استفاده می کنیم.
Nginx برای SSL چه کاری می کند؟
اتصال HTTPS در Nginx تمام می شود و ارتباط با برنامه پشت آن می تواند ساده HTTP روی شبکه داخلی باشد. گواهی SSL فقط در یک جا مدیریت می شود. اگر صدور گواهی خطا دارد، راهنمای Certbot و Let's Encrypt کمک می کند.
برای WordPress هم می شود از این ساختار استفاده کرد؟
بله، ولی فایل های آپلود و پایگاه داده باید بین سرورها مشترک باشند. اگر فقط یک سرور دارید، Nginx به عنوان reverse proxy و کش هنوز مفید است. جزئیات پیکربندی را در مستندات Nginx می توانید ببینید.
اگر یکی از سرورهای upstream از کار بیفتد چه می شود؟
Nginx بعد از چند خطای متوالی آن سرور را برای مدتی کنار می گذارد و درخواست ها را به بقیه می فرستد. اگر همه سرورها از کار بیفتند، کاربر خطا می بیند. برای اطلاع سریع از این وضعیت، مانیتورینگ سرور پیشنهاد می شود.