Caddy:修订间差异
Antigng-bot(留言 | 贡献) 小 bot: massreplace: "== 外部鏈接 ==" ->"== 外部連結 ==" |
维护清理 |
||
第15行: | 第15行: | ||
| access-date = 5 March 2016 }}</ref>|operating system=[[Android (operating system)|Android]], [[BSD|BSD variants]], [[Linux]], [[OS X]] and [[Windows]]|genre=[[Web server]], [[Proxy server|reverse proxy server]] |
| access-date = 5 March 2016 }}</ref>|operating system=[[Android (operating system)|Android]], [[BSD|BSD variants]], [[Linux]], [[OS X]] and [[Windows]]|genre=[[Web server]], [[Proxy server|reverse proxy server]] |
||
|license=[[Apache License|Apache 2]] |
|license=[[Apache License|Apache 2]] |
||
|website={{Official |
|website={{Official}}}} |
||
'''Caddy服务器'''(或稱'''Caddy Web''')是一个开源的,使用 [[Go|GoLang]] 编写,支持 [[HTTP/2]] 的 Web 服务端。它使用 [[Go|GoLang]] 标准库提供 [[超文本传输协议|HTTP]] 功能。 |
'''Caddy服务器'''(或稱'''Caddy Web''')是一个开源的,使用 [[Go|GoLang]] 编写,支持 [[HTTP/2]] 的 Web 服务端。它使用 [[Go|GoLang]] 标准库提供 [[超文本传输协议|HTTP]] 功能。 |
||
第31行: | 第31行: | ||
** TLS 1.2 临时性支持(旧协议)<ref name="DocsTLS">{{Cite web|url=https://caddyserver.com/docs/tls|title=tls - Caddy Directives|accessdate=8 March 2016}}</ref> |
** TLS 1.2 临时性支持(旧协议)<ref name="DocsTLS">{{Cite web|url=https://caddyserver.com/docs/tls|title=tls - Caddy Directives|accessdate=8 March 2016}}</ref> |
||
** [[服务器名称指示|SNI]] |
** [[服务器名称指示|SNI]] |
||
** [[OCSP装订|OCSP]] |
** [[OCSP装订|OCSP]] 证书交换验证 |
||
* [[虚拟主机]] (多个站点工作在单个端口上)<ref name="GNULinuxMagNov2015">{{Cite news|title=Caddy, Le Serveur Web Facile|last=Benedetti|first=Benoit|date=November 2015|work=GNU/Linux Magazine France|accessdate=16 December 2015|location=France|language=French|trans-title=Caddy, The Easy Web Server}}使用<code style="color:inherit; border:inherit; padding:inherit;">|accessdate=</code>需要含有<code style="color:inherit; border:inherit; padding:inherit;">|url=</code> ([[Help:引文格式1错误#accessdate missing url|帮助]]) 引文格式1维护:未识别语文类型 ([[:Category:引文格式1维护:未识别语文类型|link]]) |
* [[虚拟主机]] (多个站点工作在单个端口上)<ref name="GNULinuxMagNov2015">{{Cite news|title=Caddy, Le Serveur Web Facile|last=Benedetti|first=Benoit|date=November 2015|work=GNU/Linux Magazine France|accessdate=16 December 2015|location=France|language=French|trans-title=Caddy, The Easy Web Server}}使用<code style="color:inherit; border:inherit; padding:inherit;">|accessdate=</code>需要含有<code style="color:inherit; border:inherit; padding:inherit;">|url=</code> ([[Help:引文格式1错误#accessdate missing url|帮助]]) 引文格式1维护:未识别语文类型 ([[:Category:引文格式1维护:未识别语文类型|link]]) |
||
[[Category:含有访问日期但无网址的引用的页面]] |
[[Category:含有访问日期但无网址的引用的页面]] |
||
[[Category:引文格式1维护:未识别语文类型]]</ref> |
[[Category:引文格式1维护:未识别语文类型]]</ref> |
||
* 原生 |
* 原生 [[IPv4]] 和 [[IPv6]] 支持 |
||
* 静态文件分发 |
* 静态文件分发 |
||
* 平滑重启/重载 |
* 平滑重启/重载 |
||
* 反向代理 ( HTTP 或 |
* 反向代理 ( HTTP 或 [[WebSocket|WebSockets]]) |
||
* 负载均衡和健康性检查 |
* 负载均衡和健康性检查 |
||
* [[FastCGI]] |
* [[FastCGI]] 支持<ref name="JixeePHPFPM">{{Cite web|url=https://blog.jixee.me/how-to-setup-the-caddy-web-server-with-php-fpm/|title=How to Setup the Caddy Web Server with php-fpm}}</ref><ref name="DenBeke">{{Cite web|url=https://denbeke.be/blog/servers/caddy-server-and-wordpress-php-fpm/|title=Caddy Server and WordPress (PHP-FPM)|date=21 August 2015|last=Beke|first=Mathias}}</ref> |
||
* 配置文件模板 |
* 配置文件模板 |
||
* [[Markdown]] |
* [[Markdown]] 渲染 |
||
* [[通用网关接口|CGI]] 通过 WebSockets |
* [[通用网关接口|CGI]] 通过 WebSockets |
||
* [[Gzip]] |
* [[Gzip]] 压缩 |
||
* 简单服务器鉴权 |
* 简单服务器鉴权 |
||
* URL 重写 |
* URL 重写 |
||
第53行: | 第53行: | ||
== 安全 == |
== 安全 == |
||
Caddy 不会受到 |
Caddy 不会受到 [[通用漏洞披露|CVEs]] 攻击 (包括 [[心脏出血漏洞|Heartbleed]], DROWN, POODLE, 和 [[傳輸層安全協議|BEAST]]。)<ref name="Qualys">{{Cite web|url=https://www.ssllabs.com/ssltest/analyze.html?d=caddyserver.com|title=SSL Server Test: caddyserver.com (Powered by Qualys SSL Labs)|accessdate=5 March 2016}}</ref> 另外, Caddy 使用 TLS_FALLBACK_SCSV 以防止协议降级攻击。 |
||
2015 年 6 月 2 日,版本 0.7.1 修复了 Caddy 简单服务器鉴权中间件中时间欺诈攻击的漏洞<ref name="Caddy0.7.1">{{cite web|url=https://github.com/mholt/caddy/releases/tag/v0.7.1|title=Release 0.7.1 · mholt/caddy|date=2 June 2015}}</ref> |
2015 年 6 月 2 日,版本 0.7.1 修复了 Caddy 简单服务器鉴权中间件中时间欺诈攻击的漏洞<ref name="Caddy0.7.1">{{cite web|url=https://github.com/mholt/caddy/releases/tag/v0.7.1|title=Release 0.7.1 · mholt/caddy|date=2 June 2015}}</ref> |
||
第59行: | 第59行: | ||
关于协议和密码套件,Caddy 使用 TLS 1.0-1.2,并且倾向于 ECDHE ECDSA 与 [[高级加密标准|AES256]]-GCM-SHA384,支持十几种不同的加密方式。Cloudflare 已经使用了 Caddy 作为 TLS 1.3 的实现方案。<ref name="TwitterTLS1.3">{{cite tweet|user=grittygrease|number=705929028142673924|date=4 Mar 2016|author=Nick Sullivan|title=It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy}}</ref> |
关于协议和密码套件,Caddy 使用 TLS 1.0-1.2,并且倾向于 ECDHE ECDSA 与 [[高级加密标准|AES256]]-GCM-SHA384,支持十几种不同的加密方式。Cloudflare 已经使用了 Caddy 作为 TLS 1.3 的实现方案。<ref name="TwitterTLS1.3">{{cite tweet|user=grittygrease|number=705929028142673924|date=4 Mar 2016|author=Nick Sullivan|title=It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy}}</ref> |
||
传统的特权降级无法工作在 GoLang 程序上。<ref name="GoIssue1435">{{Cite web|url=https://github.com/golang/go/issues/1435|title=syscall: Setuid/Setgid doesn't apply to all threads on Linux|accessdate=5 March 2016|date=21 January 2011}}</ref> 为了绑定低于 1024 的端口, Caddy 必须使用 root 账户运行 (不建议) 或通过 |
传统的特权降级无法工作在 GoLang 程序上。<ref name="GoIssue1435">{{Cite web|url=https://github.com/golang/go/issues/1435|title=syscall: Setuid/Setgid doesn't apply to all threads on Linux|accessdate=5 March 2016|date=21 January 2011}}</ref> 为了绑定低于 1024 的端口, Caddy 必须使用 root 账户运行 (不建议) 或通过 <code>setcap</code> 给予低位端口使用权限(建议的)。 并且,在将来的版本中会尝试使用非特级子进程运行。<ref name="CaddyIssue528">{{Cite web|url=https://github.com/mholt/caddy/issues/528|title=Implement privilege de-escalation|date=21 January 2016}}</ref> |
||
Caddy 没有自动启动 |
Caddy 没有自动启动 [[HTTP严格传输安全|HTTP Strict Transport Security]];推荐通过 Caddy's <code>header</code> 配置启用 HSTS。<ref name="CIO">{{Cite web|url=https://https.cio.gov/hsts/#configuration-for-common-web-servers|title=HTTP Strict Transport Security|accessdate=8 March 2016}}</ref> |
||
=== 自动签发 HTTPS === |
=== 自动签发 HTTPS === |
||
Caddy 默认通过检查域名来启用 HTTPS (通过 |
Caddy 默认通过检查域名来启用 HTTPS (通过 ACME protocol 检查域名并签发证书), 并且重定向 HTTP 请求到 HTTPS。<ref name="AutoHTTPS">{{Cite web|url=https://caddyserver.com/docs/automatic-https|title=Automatic HTTPS|accessdate=5 March 2016}}</ref> 它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。 [[Let's Encrypt]] 是默认的证书颁发机构,但用户可以自定义所使用的 ACME CA,这在测试配置时是必要的。在2016年第一季度, 有百分之2的 Let's Encrypt 证书是由 Caddy 签发的。<ref name="USENIX">{{Cite AV media}}</ref> |
||
一个可选的配置允许 Caddy 在需要时签发一个证书 "按需 TLS。"<ref name="AutoHTTPS-OnDemand">{{Cite web|url=https://caddyserver.com/docs/automatic-https#on-demand|title=On-Demand TLS|accessdate=5 March 2016}}</ref> 使用这种方案时,用户必须指定可通过该方案配置的证书数量。 |
一个可选的配置允许 Caddy 在需要时签发一个证书 "按需 TLS。"<ref name="AutoHTTPS-OnDemand">{{Cite web|url=https://caddyserver.com/docs/automatic-https#on-demand|title=On-Demand TLS|accessdate=5 March 2016}}</ref> 使用这种方案时,用户必须指定可通过该方案配置的证书数量。 当Caddy收到一个没有配置证书的请求时, 它会自动通过 ACME 签发并配置, 然后将证书存储于内存和硬盘。 这个过程通常需要几秒钟的时间,并且受到限制。 |
||
当使用 TLS, Caddy 会自动切换会话密钥以保证安全性<ref>{{Cite journal|title=Measuring the Security Harm of TLS Crypto Shortcuts|url=http://doi.acm.org/10.1145/2987443.2987480|last=Springall|first=Drew|last2=Durumeric|first2=Zakir|date=2016-01-01|journal=Proceedings of the 2016 ACM on Internet Measurement Conference|publisher=ACM|doi=10.1145/2987443.2987480|series=IMC '16|location=New York, NY, USA|pages=33–47|isbn=9781450345262|last3=Halderman|first3=J. Alex}}</ref> |
当使用 TLS, Caddy 会自动切换会话密钥以保证安全性<ref>{{Cite journal|title=Measuring the Security Harm of TLS Crypto Shortcuts|url=http://doi.acm.org/10.1145/2987443.2987480|last=Springall|first=Drew|last2=Durumeric|first2=Zakir|date=2016-01-01|journal=Proceedings of the 2016 ACM on Internet Measurement Conference|publisher=ACM|doi=10.1145/2987443.2987480|series=IMC '16|location=New York, NY, USA|pages=33–47|isbn=9781450345262|last3=Halderman|first3=J. Alex}}</ref> |
2017年6月29日 (四) 07:13的版本
此條目翻譯品質不佳。 (2017年4月3日) |
原作者 | Matthew Holt |
---|---|
首次发布 | 2015年4月28日 |
当前版本 | 0.9.5(2017年1月24日 | )
源代码库 | |
编程语言 | Go[1] |
操作系统 | Android, BSD variants, Linux, OS X and Windows |
类型 | Web server, reverse proxy server |
许可协议 | Apache 2 |
网站 | 官方网站 |
Caddy服务器(或稱Caddy Web)是一个开源的,使用 GoLang 编写,支持 HTTP/2 的 Web 服务端。它使用 GoLang 标准库提供 HTTP 功能。
Caddy 一个显著的特性是默认启用 HTPPS。[2][3]它是第一个无需额外配置即可提供 HTTPS 特性的 Web 服务器。[4]
作者 Matt Holt 于 2014 年 12 月开始开发 Caddy ,并于 2015 年 4 月发布第一个版本。[5] 在发布后的一年里,它的下载量超过了 20000 次,并在 GitHub 上获得了 4500 关注。[6]
Caddy 支持各种 Web 技术,提供静态编译的二进制文件,适用于 i386、amd64 和 ARM 架构上的 Windows、Mac、Linux、Android 和 BSD 操作系统。
功能
Caddy 可以提供各种网站技术,它也可以作为反向代理和负载均衡器。Caddy 的大部分功能都实现为中间件,并通过 Caddyfile 中的指令(用于配置 Caddy 的文本文件)进行控制。[7]
- HTTP/1.1 (原始的HTTP) and HTTP/2 (HTTPS的推荐连接方案)
- HTTPS, 同时接受自动签发和手动管理
- 虚拟主机 (多个站点工作在单个端口上)[9]
- 原生 IPv4 和 IPv6 支持
- 静态文件分发
- 平滑重启/重载
- 反向代理 ( HTTP 或 WebSockets)
- 负载均衡和健康性检查
- FastCGI 支持[10][11]
- 配置文件模板
- Markdown 渲染
- CGI 通过 WebSockets
- Gzip 压缩
- 简单服务器鉴权
- URL 重写
- 重定向
- 文件浏览服务
- 访问日志
- 实验性 QUIC 支持
安全
Caddy 不会受到 CVEs 攻击 (包括 Heartbleed, DROWN, POODLE, 和 BEAST。)[12] 另外, Caddy 使用 TLS_FALLBACK_SCSV 以防止协议降级攻击。
2015 年 6 月 2 日,版本 0.7.1 修复了 Caddy 简单服务器鉴权中间件中时间欺诈攻击的漏洞[13]
关于协议和密码套件,Caddy 使用 TLS 1.0-1.2,并且倾向于 ECDHE ECDSA 与 AES256-GCM-SHA384,支持十几种不同的加密方式。Cloudflare 已经使用了 Caddy 作为 TLS 1.3 的实现方案。[14]
传统的特权降级无法工作在 GoLang 程序上。[15] 为了绑定低于 1024 的端口, Caddy 必须使用 root 账户运行 (不建议) 或通过 setcap
给予低位端口使用权限(建议的)。 并且,在将来的版本中会尝试使用非特级子进程运行。[16]
Caddy 没有自动启动 HTTP Strict Transport Security;推荐通过 Caddy's header
配置启用 HSTS。[17]
自动签发 HTTPS
Caddy 默认通过检查域名来启用 HTTPS (通过 ACME protocol 检查域名并签发证书), 并且重定向 HTTP 请求到 HTTPS。[18] 它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。 Let's Encrypt 是默认的证书颁发机构,但用户可以自定义所使用的 ACME CA,这在测试配置时是必要的。在2016年第一季度, 有百分之2的 Let's Encrypt 证书是由 Caddy 签发的。[19]
一个可选的配置允许 Caddy 在需要时签发一个证书 "按需 TLS。"[20] 使用这种方案时,用户必须指定可通过该方案配置的证书数量。 当Caddy收到一个没有配置证书的请求时, 它会自动通过 ACME 签发并配置, 然后将证书存储于内存和硬盘。 这个过程通常需要几秒钟的时间,并且受到限制。
当使用 TLS, Caddy 会自动切换会话密钥以保证安全性[21]
參考資料
- ^ Gerrand, Andrew. Go 1.6 is released. golang.org. 17 February 2016 [5 March 2016].
- ^ Johnson, Brad. A Better Web Server with Free SSL. 23 February 2016 [5 March 2016].
- ^ Automatic HTTPS with Caddy Server. 18 December 2015 [5 March 2016].
- ^ Dmitry Chestnykh [@dchest]. Caddy is the first general-purpose web server to default to HTTPS without user intervention (using Let's Encrypt) (推文). 17 December 2015 –通过Twitter.
- ^ Show HN: Caddy, a cross-platform HTTP/2 web server. 28 April 2015.
- ^ Is Caddy Free?
- ^ The Caddyfile. [29 February 2016].
- ^ tls - Caddy Directives. [8 March 2016].
- ^ Benedetti, Benoit. Caddy, Le Serveur Web Facile [Caddy, The Easy Web Server]. GNU/Linux Magazine France (France). November 2015 (French). 使用
|accessdate=
需要含有|url=
(帮助) 引文格式1维护:未识别语文类型 (link) - ^ How to Setup the Caddy Web Server with php-fpm.
- ^ Beke, Mathias. Caddy Server and WordPress (PHP-FPM). 21 August 2015.
- ^ SSL Server Test: caddyserver.com (Powered by Qualys SSL Labs). [5 March 2016].
- ^ Release 0.7.1 · mholt/caddy. 2 June 2015.
- ^ Nick Sullivan [@grittygrease]. It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy (推文). 4 Mar 2016 –通过Twitter.
- ^ syscall: Setuid/Setgid doesn't apply to all threads on Linux. 21 January 2011 [5 March 2016].
- ^ Implement privilege de-escalation. 21 January 2016.
- ^ HTTP Strict Transport Security. [8 March 2016].
- ^ Automatic HTTPS. [5 March 2016].
- ^ 空引用 (帮助)
- ^ On-Demand TLS. [5 March 2016].
- ^ Springall, Drew; Durumeric, Zakir; Halderman, J. Alex. Measuring the Security Harm of TLS Crypto Shortcuts. Proceedings of the 2016 ACM on Internet Measurement Conference. IMC '16 (New York, NY, USA: ACM). 2016-01-01: 33–47. ISBN 9781450345262. doi:10.1145/2987443.2987480.