پرش به محتوای اصلی
زیرساخت و لینوکس
۱ دقیقه مطالعه

راهنمای تفکیک ترافیک چند دامنه روی پورت ۴۴۳ با Nginx Stream SNI

آموزش پیکربندی ماژول Stream در Nginx برای هدایت هوشمند ترافیک TLS به سرویس‌های مختلف داخلی بدون نیاز به باز کردن پورت‌های متعدد.

سید محمد بهبهانی‌زاده
توسعه‌دهنده فول‌استک و معمار نرم‌افزار

هنگامی که چندین سرویس مستقل (مانند وب‌سایت اصلی، API، پنل مدیریت و ورکرها) روی یک سرور یا زیرساخت قرار دارند، استفاده از قابلیت SNI Preread به شما امکان می‌دهد ترافیک لایه TCP را بر اساس نام دامنه (SNI) مستقیماً به پورت‌ها یا کانتینرهای مختلف هدایت کنید.

مفهوم SNI Preread در لایه انتقال (Layer 4)

در این معماری، Nginx ابتدا در لایه Stream اطلاعات سرآیند TLS ClientHello را خوانده و بدون اینکه نیاز به بازگشایی یا دستکاری گواهینامه در ورودی اصلی باشد، ترافیک را به سرویس مقصد ارسال می‌کند.

نکات کلیدی

  • امکان میزبانی چندین سرویس مستقل روی پورت استاندارد ۴۴۳.
  • تفکیک تمیز ترافیک میکروسرویس‌ها بدون درگیر کردن کدهای اپلیکیشن.
  • حفظ آی‌پی واقعی کلاینت با فعال‌سازی پروتکل Proxy Protocol.

نمونه کانفیگ عمومی Nginx Stream SNI

در قطعه کد زیر نمونه‌ای از پیکربندی استاندارد Nginx برای تفکیک دامنه‌های نمونه به پورت‌های لوکال آورده شده است:

nginx
stream {
  map $ssl_preread_server_name $backend_pool {
    app.example.com      127.0.0.1:8001;
    api.example.com      127.0.0.1:8002;
    panel.example.com    127.0.0.1:8003;
    default              127.0.0.1:8001;
  }

  server {
    listen 443;
    proxy_pass $backend_pool;
    ssl_preread on;
    proxy_protocol on;
  }
}

جمع‌بندی

معماری SNI Splitter به ساده‌سازی مدیریت فایروال سرورها کمک کرده و اجازه می‌دهد سرویس‌های ایزوله روی پورت استاندارد وب فعالیت کنند.

وب، سئو و فرانت‌اند
۱ دقیقه مطالعه

تایپوگرافی فارسی و RTL در رابط‌های مدرن: Vazirmatn، اعداد و Tailwind

نکات عملی برای ساخت رابط کاربری فارسی خوانا: انتخاب و میزبانی فونت، اعداد فارسی و جدولی، فاصله‌گذاری حروف، و ترکیب درست متن فارسی و انگلیسی در جهت راست‌به‌چپ.

مطالعه مقاله#RTL