Nginx در برابر Caddy و Traefik زیر بار واقعی
خلاصهٔ کاملتر
به گفتهی نویسنده، دلیل این آزمایش یه ضربالاجل واقعی بوده: پشتیبانی ingress-nginx تو مارس ۲۰۲۶ تموم میشه و یه مشتری لجستیک که چهار سال روی EKS ازش استفاده میکرد، باید یه مسیر جایگزین انتخاب میکرد. برای همین نویسنده هر سه پروکسی رو روی یه کلاستر یکسان، با همون ۱۲ میکروسرویس، همون صادرکنندهی گواهی و همون تستهای بار، هرکدوم شش هفته بهعنوان لبهی شبکه اجرا کرده. بار متوسط حدود ۳۵٬۰۰۰ درخواست در دقیقه و اوجش حدود ۶۱٬۰۰۰ بوده.
از نظر throughput خام، Nginx (نسخهی F5 NIC) با حدود ۴۶٬۰۰۰ درخواست در ثانیه جلو بود. Caddy با حدود ۴۱٬۰۰۰ تقریباً ۱۱٪ عقبتر و Traefik با حدود ۳۶٬۰۰۰ کمترین عدد رو داشت؛ ولی نویسنده تأکید میکنه همین کمترین عدد هم سه برابر اوج ترافیک واقعیشون ظرفیت داشت، پس عملاً گلوگاه نبود.
جایی که تفاوت واقعی خودشو نشون داد، زمان اپراتور برای هر مسیر جدید بود. اضافهکردن یه route تو Nginx حدود ۲۳ دقیقه، تو Caddy حدود ۹ دقیقه و تو Traefik بعد از جاافتادن قراردادهای برچسبگذاری فقط حدود ۴ دقیقه طول میکشید (هرچند اولین route تو Traefik ۳۸ دقیقه وقت گرفت تا مستندات schema نوشته شد). به گفتهی نویسنده همین صرفهجویی، ماهی حدود ۶ ساعت کار و تقریباً ۹۰۰ دلار بود که تصمیم نهایی رو رقم زد.
هر کدوم ویژگی خودشونو داشتن: Caddy واقعاً HTTPS خودکار و HTTP/3 پیشفرض میاره و پشتیبانی ECHش برای مشتریای که سیاست بازرسی TLS سختگیرانه داشت مهم بود. Traefik با تماشای رویدادهای Kubernetes مسیرها رو داینامیک میسازه، ولی همین باعث شد یه pod با برچسب اشتباه ۱۱ دقیقه ترافیک عمومی بگیره؛ پس مستندسازی قرارداد برچسبها اجباری شد. لایهی سازگاری Traefik با annotationهای ingress-nginx هم دو هفته از مهاجرت رو نجات داد.
نویسنده یه حادثهی روز مهاجرت رو هم روایت میکنه که درس اصلیش اینه: پروکسیها خرابی نمیسازن، بلکه پیکربندی تستنشده رو لو میدن. یه annotation اشتباه، تایماوت یه سرویس صادرات CSV رو روی ۳۰ ثانیه گذاشت درحالیکه ۳۰۰ ثانیه لازم داشت، و نرخ خطا تو سه دقیقه از صفر به ۸٪ رسید و کاربرها خطای ۵۰۲ گرفتن. یه مشکل دیگه هم اشتباهبودن IP کلاینت پشت لود بالانسر شرکتی بود که تا تنظیم forwardedHeaders.trustedIPs ادامه داشت، و پرشدن ۹۲ درصدی جدول nf_conntrack که ربطی به خود Traefik نداشت.
نتیجهی نویسنده اینه که «بهترین» پروکسی وجود نداره؛ فقط اونی که با مدل عملیاتی تو جوره. برای این مشتری با دیپلوی هفتگی و ضربالاجل مهاجرت، Traefik برنده شد؛ ولی Nginx رو برای مسیر پرترافیک صادرات CSV نگه داشتن و Caddy هم روی کلاستر staging شخصی نویسنده میچرخه چون حاضر نیست شنبهها Certbot نگهداری کنه.
نکات کلیدی:
- پایان پشتیبانی ingress-nginx در مارس ۲۰۲۶ محرک اصلی مهاجرته
- throughput: Nginx بالاترین (~۴۶k req/s)، Caddy ~۱۱٪ عقب، Traefik کمترین ولی با ظرفیت ۳ برابر اوج
- زمان افزودن هر route: Nginx ۲۳، Caddy ۹، Traefik ۴ دقیقه؛ همین تصمیم رو گرفت
- سازگاری Traefik با annotationهای ingress-nginx دو هفته مهاجرت رو کوتاه کرد
- بیشتر «خرابی پروکسی» در واقع تایماوت یا هدر IP اشتباه یا پرشدن nf_conntrack بود




