کدی (وب سرور)

کدی یک وب سرور متن‌باز است که با زبان برنامه‌نویسی گو نوشته شده‌است. برای عملکرد HTTP خود از کتابخانه استاندارد گو استفاده می‌کند و به‌طور بومی از HTTPS پشتیبانی می‌کند.
توسعه کدی در دسامبر ۲۰۱۴ آغاز شد. اولین نسخه در آوریل ۲۰۱۵ منتشر شد. نسخه ۱٫۰٫۰ در آوریل ۲۰۱۹ منتشر شد. نسخه ۲٫۰٫۰ در ماه مه سال ۲۰۲۰ منتشر شد.

کدی از استانداردهای وب مختلفی پشتیبانی می‌کند و به عنوان باینری کاملاً کامپایل شده برای سیستم عامل‌های مایکروسافت ویندوز مک‌اواس، لینوکس، اندروید و BSD در X86-64، آی‌ای-۳۲ و معماری آرم در دسترس است.

قابلیت‌ها 
انواع فناوری‌های وب سایت می‌توانند توسط کدی به خدمت گرفته شوند، همچنین می‌تواند به عنوان یک پروکسی معکوس و توازن بار عمل کند. بیشتر ویژگی‌های کدی پیاده‌سازی‌هایی هستند که در کتابخانه گو یافت می‌شوند، اما برخی از پیشرفت‌ها به عنوان میان‌افزار در دسترس هستند و از طریق دستورالعمل‌های موجود در Caddyfile (یک فایل متنی که برای پیکربندی Caddy استفاده می‌شود) در معرض دید قرار می‌گیرند.
 HTTP / 1.1 (متن ساده HTTP) , HTTP / 2 (پیش فرض برای اتصالات HTTPS) و پشتیبانی آزمایشی HTTP / 3.
 HTTPS، یا به‌طور خودکار فعال و مدیریت می‌شود، یا به صورت دستی پیکربندی می‌شود
 TLS 1.3 (شامل پشتیبانی موقتی از پروتکل‌های قدیمی)
 نشانگر نام سرور
 منگنه OCSP
 میزبانی مجازی (چندین سایت در یک پورت)
 پشتیبانی بومی IPv4 و IPv6
 سرویس دادن فایل‌های استاتیک (در صورت امکان از sendfile استفاده می‌کند)
 راه اندازی مجدد/بارگذاری مجدد برازنده
 پروکسی معکوس (HTTP یا وب‌سوکت)
 توازن بار با بررسی‌های سالم
 پروکسی واسط دروازه مشترک سریع
 الگوها (مشابه Server Side Includes)
 ارائه علامت‌گذاری
 واسط دروازه مشترک از طریق WebSockets
 فشرده سازی Gzip
 اصالت‌سنجی برای دسترسی‌های اولیه
 بازنویسی URL
 تغییر مسیر می‌دهد
 مرور فایل
 گزارش‌های دسترسی، خطا و فرایند
 پشتیبانی آزمایشی کوییک

امنیت 
در ۲ ژوئن ۲۰۱۵، نسخه ۰٫۷٫۱ منتشر شد تا آسیب‌پذیری در برابر حملات زمان‌بندی در میان‌افزار اصلی احراز هویت کدی برطرف کند.

با توجه به پروتکل‌ها و مجموعه‌های رمزنگاری، کدی از TLS ۱٫۰–۱٫۲ استفاده می‌کند و ECDHE ECDSA را با AES-256 GCM SHA-۳۸۴ ترجیح می‌دهد، اگرچه ده‌ها رمزگذار مختلف پشتیبانی می‌شوند. کلودفلر همچنین از کدی به عنوان بستری برای پیاده‌سازی آزمایشی TLS ۱٫۳ استفاده می‌کند.

امتیاز سنتی تنش زدایی همان‌طور که در برنامه‌های C انجام می‌شود در برنامه‌های GO بی‌اهمیت است یا امکان‌پذیر نیست.

HTTPS خودکار 
کدی HTTPS را به‌طور پیش‌فرض برای سایت‌هایی با نام‌های دامنه واجد شرایط فعال می‌کند (نام‌هایی که یک گواهی TLS می‌تواند از طریق پروتکل ACME مذاکره شود)، و درخواست‌های HTTP را به HTTPS تغییر مسیر می‌دهد. گواهی‌نامه‌هایی را که هنگام راه‌اندازی لازم است، دریافت می‌کند و آنها را در طول عمر کارساز، تمدید می‌کند. Let's Encrypt مرجع صدور گواهینامه پیش فرض است، اما کاربر ممکن است ACME CA که مورد استفاده قرار می‌گیرد، شخصی‌سازی کند، که اغلب هنگام آزمایش پیکربندی‌ها لازم است. از Q1 2016، کدی حدود ۲٪ از گواهینامه‌های صادر شده توسط Let's Encrypt را به خود اختصاص داده‌است.

یک پیکربندی جایگزین به کدی اجازه می‌دهد تا گواهینامه‌ها را فقط در صورت لزوم، هنگام دست دادن TLS و نه هنگام راه اندازی دریافت کند، ویژگی ای که "On-Demand TLS" نامیده می‌شود. برای فعال کردن این ویژگی، کاربر باید حداکثر تعداد گواهینامه‌هایی را که می‌تواند از این طریق صادر شود تعیین کند. هنگامی که کدی درخواستی برای نام میزبانی دریافت می‌کند که برای آن هنوز گواهی ندارد، با یک گواهی جدید از طریق ACME مذاکره کرده و بلافاصله خدمت‌رسانی می‌کند، در حالی که گواهی به دست آمده را در حافظه ذخیره کرده و آن را بر روی دیسک ذخیره می‌کند. این فرایند معمولاً چند ثانیه طول می‌کشد و در معرض محدودیت سرعت قرار می‌گیرد.

هنگام استفاده از TLS، کدی به‌طور متناوب کلیدهای بلیط جلسه را چرخش می‌دهد تا به حفظ حریم خصوصی کمک شود.

دورسنجی (نسخه ۱) 
با شروع نسخه ۰٫۱۱، کدی دارای دورسنجی است.در هنگام بارگیری کدی از وب‌سایت رسمی (به‌طور پیش فرض غیرفعال است) و انتخاب کردن (به‌طور پیش فرض فعال است) هنگام ساختن از منبع

کدی نسخه ۲ فاقد دورسنجی است.

تأثیرگذاری

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

منابع

پیوند به بیرون 
 
 

پراکسی سرورهای آزاد
پراکسی معکوس
سرویس‌دهنده‌های وب آزاد
نرم‌افزارهای آزاد چندسکویی