کدی (وب سرور)
نویسنده(های) اصلی | Matthew Holt |
---|---|
انتشار اولیه | ۲۸ آوریل ۲۰۱۵ |
انتشار پایدار | 2.3.0
/ ۱ ژانویه ۲۰۲۱[۱] |
انتشار آزمایشی | 2.4.0-beta.1
/ ۱۵ فوریه ۲۰۲۱[۱] |
مخزن | |
نوشتهشده با | گو[۲] |
سیستمعامل | اندروید، بیاسدی، لینوکس، پلان ۹, مکاواس و مایکروسافت ویندوز |
نوع | کارساز وب، پراکسی معکوس |
مجوز | آپاچی ۲ |
وبگاه |
کدی یک وب سرور متنباز[۳] است که با زبان برنامهنویسی گو نوشته شدهاست. برای عملکرد HTTP خود از کتابخانه استاندارد گو استفاده میکند و بهطور بومی از HTTPS پشتیبانی میکند.[۴][۵][۶]
توسعه کدی در دسامبر ۲۰۱۴ آغاز شد.[۱] اولین نسخه در آوریل ۲۰۱۵ منتشر شد.[۷][۸] نسخه ۱٫۰٫۰ در آوریل ۲۰۱۹ منتشر شد.[۹] نسخه ۲٫۰٫۰ در ماه مه سال ۲۰۲۰ منتشر شد.[۱۰]
کدی از استانداردهای وب مختلفی پشتیبانی میکند و به عنوان باینری کاملاً کامپایل شده برای سیستم عاملهای مایکروسافت ویندوز مکاواس، لینوکس، اندروید و BSD در X86-64، آیای-۳۲ و معماری آرم در دسترس است.
قابلیتها
[ویرایش]انواع فناوریهای وب سایت میتوانند توسط کدی به خدمت گرفته شوند، همچنین میتواند به عنوان یک پروکسی معکوس و توازن بار عمل کند. بیشتر ویژگیهای کدی پیادهسازیهایی هستند که در کتابخانه گو یافت میشوند، اما برخی از پیشرفتها به عنوان میانافزار در دسترس هستند و از طریق دستورالعملهای موجود در Caddyfile (یک فایل متنی که برای پیکربندی Caddy استفاده میشود) در معرض دید قرار میگیرند.[۱۱]
- HTTP / 1.1 (متن ساده HTTP) , HTTP / 2 (پیش فرض برای اتصالات HTTPS) و پشتیبانی آزمایشی پروتکل انتقال ابرمتن نگارش ۳.[۱۲]
- 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 ارتقا یابد.[۲۷]
منابع
[ویرایش]- ↑ ۱٫۰ ۱٫۱ ۱٫۲ "Releases". Github. Retrieved 2021-03-29. خطای یادکرد: برچسب
<ref>
نامعتبر؛ نام «releases» چندین بار با محتوای متفاوت تعریف شده است. (صفحهٔ راهنما را مطالعه کنید.). - ↑ Gerrand, Andrew (17 February 2016). "Go 1.6 is released". golang.org. Retrieved 5 March 2016.
- ↑ "Light Code Labs". lightcodelabs.com. Light Code Labs. Archived from the original on 22 April 2021. Retrieved 2019-09-15.
Caddy is an open source, easy-to-use HTTP/2 web server...
- ↑ Johnson, Brad (23 February 2016). "A Better Web Server with Free SSL". VolumeLabs.net. Archived from the original on 2 August 2017. Retrieved 5 March 2016.
- ↑ "Automatic HTTPS with Caddy Server". 18 December 2015. Retrieved 5 March 2016.
- ↑ Aas, Josh (12 February 2016). NYLUG Presents: Josh Aas on Let's Encrypt: A Free, Automated, and Open CA. Bloomberg. 32 minutes in.
- ↑ "Caddy 0.5.0". github.com.
- ↑ "Show HN: Caddy, a cross-platform HTTP/2 web server". news.ycombinator.com. 28 April 2015.
- ↑ "Caddy 1.0.0". github.com.
- ↑ "Caddy 2.0.0". github.com.
- ↑ "The Caddyfile". Retrieved 29 February 2016.
- ↑ "Release 2.0 beta 17 · caddyserver/caddy". Github (به انگلیسی). 2020-03-13. Retrieved 2020-08-11.
- ↑ "tls - Caddy Directives". Retrieved 8 March 2016.
- ↑ Benedetti, Benoit (November 2015). "Caddy, Le Serveur Web Facile" [Caddy, The Easy Web Server]. GNU/Linux Magazine France (به فرانسوی). France.
- ↑ "How to Setup [sic] the Caddy Web Server with php-fpm". Archived from the original on 2017-08-18. Retrieved 2016-03-09.
- ↑ Beke, Mathias (21 August 2015). "Caddy Server and WordPress (PHP-FPM)".
- ↑ "Release 0.7.1 · mholt/caddy". 2 June 2015.
- ↑ Nick Sullivan [@grittygrease] (4 Mar 2016). "It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy" (Tweet) – via Twitter.
- ↑ "syscall: Setuid/Setgid doesn't apply to all threads on Linux". 21 January 2011. Retrieved 5 March 2016.
- ↑ "Automatic HTTPS". Retrieved 5 March 2016.
- ↑ Eckersley, Peter (21 February 2016). USENIX Enigma 2016 - Several Horror Stories about the Encrypted Web. USENIX. 13 minutes in.
- ↑ "On-Demand TLS". Retrieved 5 March 2016.
- ↑ Kubacki, Mark (12 April 2016). "server: Rotate TLS ticket 'keys'". Archived from the original on 13 June 2019. Retrieved 13 June 2019.
- ↑ "Caddy 0.11 Will Have Telemetry". Caddy (به انگلیسی). 2018-03-30. Archived from the original on 12 December 2019. Retrieved 2018-06-05.
- ↑ "Caddy Telemetry - Documentation". caddyserver.com. Retrieved 20 February 2019.
- ↑ "v2: FAQ - caddyserver/caddy Wiki". Caddy (به انگلیسی). 2020-04-10. Retrieved 2021-03-25.
- ↑ Belamaric, John; Liu, Cricket (2019). "1: Introduction". Learning CoreDNS: Configuring DNS for Cloud Native Environments (1 ed.). ISBN 978-1-4920-4796-4. OCLC 1091363083. What is CoreDNS?.