论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
运维.售后
›
运维.售后
›
Caddy 自动HTTPS 反向代理、重定向、静态页面 - docker ...
Caddy 自动HTTPS 反向代理、重定向、静态页面 - docker版
徐锦洪
金牌会员
|
2024-9-28 10:35:26
|
显示全部楼层
|
阅读模式
楼主
主题
774
|
帖子
774
|
积分
2322
简介
Caddy 是一个通用的、易于利用的 Web 服务器,具有以下特点:
快速: Caddy 利用 Go 语言编写,以高性能著称。
安全: Caddy 支持 HTTPS、自动证书天生、HTTP/2 等安全功能。
易用: Caddy 的设置文件简单易懂,易于设置。
功能丰富: Caddy 支持多种功能,包罗反向代理、负载均衡、缓存、日志记录等。
Caddy 可以用于各种场景,包罗:
托管静态网站
托管 Web 应用
作为反向代理
作为负载均衡器
Caddy 可以运行在各种利用体系上,包罗 Linux、Windows、macOS 等。
Caddy 与 Nginx 对比
特性CaddyNginx语言GoC性能接近 Nginx较高内存占用较低较低安全性支持 HTTPS、自动证书天生、HTTP/2支持 HTTPS、HTTP/2易用性设置文件简单易懂设置文件语法复杂功能支持反向代理、负载均衡、缓存、日志记录等支持反向代理、负载均衡、缓存、日志记录等插件支持支持社区活跃度较高较高
Caddy 的上风:
快速:Caddy 利用 Go 语言编写,以高性能著称。
安全:Caddy 支持 HTTPS、自动证书天生、HTTP/2 等安全功能。
易用:Caddy 的设置文件简单易懂,易于设置。
社区活跃:Caddy 社区活跃,可以得到实时帮助。
Nginx 的上风:
性能:Nginx 性能较高,在高负载情况下表现稳固。
功能丰富:Nginx 支持多种功能,可以满足复杂的需求。
社区活跃:Nginx 社区活跃,可以得到实时帮助。
Caddy 的劣势:
性能:Caddy 的性能略逊于 Nginx。
功能:Caddy 的功能略少于 Nginx。
Nginx 的劣势:
易用性:Nginx 的设置文件语法复杂,学习曲线较陡。
总结:
Caddy 和 Nginx 都是良好的 Web 服务器。Caddy 的上风在于快速、安全、易用,适合中小网站和对性能要求不高的场景。Nginx 的上风在于性能高、功能丰富,适合大型网站和对性能要求高的场景。
选择 Caddy 还是 Nginx 取决于你的具体需求:
如果你的网站对性能要求不高,而且盼望快速、安全、易于部署,那么 Caddy 是一个不错的选择。
如果你的网站对性能要求高,而且必要丰富的功能,那么 Nginx 是一个不错的选择。
利用 - docker版本
由于是利用docker举行利用的,以是必要提前安装好docker。
下面我会从简单到困难的次序举行利用。
hello world
hello world
这个例子是从caddy的docker hub官网拿的。我的docker版本是25,我当前所在目录为/home/web/test
拉取镜像
docker pull caddy
复制代码
第一步:创建index.html
创建index.html并写入内容hello world
echo "hello world" > index.html
复制代码
第二步:启动容器
docker run -d --name=caddy -p 80:80 \
-v $PWD/index.html:/usr/share/caddy/index.html \
-v caddy_data:/data \
caddy
复制代码
第三步:测试
本地测试:curl http://localhost/,出现hello world表现成功。
浏览器测试:浏览器窗口输入服务器IP
测试成功。
设置IP访问的静态页面
设置IP访问的静态页面和上面hello world差不多。区别就是Caddyfile文件是利用自定义的,hello world是利用默认的Caddyfile。index.html文件就是静态页面。
由于上面已经启动了caddy容器,如果必要继续下去的话可以删除容器。
docker rm -f caddy
复制代码
第一步:创建Caddyfile
vim Caddyfile
复制代码
输入上面的命令之后,会进入vim编辑页面,按i键进入编辑模式,粘贴以下内容
http:// {
root * /usr/share/caddy
encode gzip
file_server
}
复制代码
按Esc键后输入:wq回车保存退出。
第二步:编写静态页面内容
为了和hello world区分开来,改一下静态页面的内容。
改成如下所示:
第三步:运行容器
下面我把caddy中的data目录挂载到主机的/data/caddy/data方便以后有需求要下载证书文件。
docker run -d --name=caddy -p 80:80 -p 443:443 -p 443:443/udp -v $PWD/Caddyfile:/etc/caddy/Caddyfile -v $PWD/index.html:/usr/share/caddy/index.html -v /data/caddy/data:/data --restart=always caddy:latest
复制代码
第四步:测试
浏览器输入服务器IP。
设置带域名的静态页面
上面的还是通过IP的方式去访问静态页的。如何通过域名的方式去访问静态页呢?
只需在Caddyfile设置就行。
注意:小搭档必要做测试学习,最好找一个国外的服务器,如今国内的服务器做域名剖析必要备案才能利用。
下面是阿里云的通知:
第一步:修改Caddyfile
Caddyfile内里填写自己的域名,位置我有注释。
# Caddyfile 配置文件
# 全局配置
http:// {
# 根目录,指向所有静态文件的根目录
# 这里设置为 `/usr/share/caddy`
root * /usr/share/caddy
# 启用 gzip 压缩
encode gzip
# 启用文件服务器功能
file_server
}
# 虚拟主机配置
# 下面的域名填写自己解析的域名 - 注意
caddy.xxxxx.fun {
root * /usr/share/caddy
# 启用 gzip 压缩
encode gzip
# 启用文件服务器功能
file_server
}
复制代码
为了区分我再次修改静态页面的内容
修改好之后直接重启caddy即可。
第二步:重启caddy
docker restart caddy
复制代码
第三步:测试
在浏览器输入域名,回车。
而且可以看到caddy为我们自动申请了证书。
设置带域名的反向代理
为了测试,我在服务器上启动了一个服务,http://localhost:19850/端口为19850,如今我必要利用caddy去反向代理到19850这个服务。
第一步:修改Caddyfile
设置中必要填写自己的服务器IP
# Caddyfile 配置文件
# 虚拟主机配置
# 下面的域名修改为自己的 - 注意
caddy.xxxxxxx.fun {
# 反向代理配置
# 将所有请求转发到 服务器IP:19850 地址 - 注意
reverse_proxy 服务器IP:19850
# 启用 gzip 压缩
encode gzip
}
复制代码
第二步:重启caddy
docker restart caddy
复制代码
第三步:测试
可以看到通过caddy的反代,成功访问19850端口的服务。
设置带域名的重定向
第一步:修改Caddyfile
重定向到百度。
# Caddyfile 配置文件
# 虚拟主机配置
caddy.xxxx.fun {
# 重定向所有请求到 https://baidu.com
# 将请求的 URI 路径附加到 https://baidu.com 之后,并将其作为新的目标 URL 进行重定向
redir https://baidu.com{uri}
}
复制代码
重定向所有请求: 将所有请求重定向到 https://baidu.com。
{uri} 表现请求的 URI 路径。比方,如果请求的 URL 是 https://caddy.xxxx.fun/hello/world,那么 {uri} 的值为 /hello/world。
重定向后的 URL 将是 https://baidu.com{uri}。比方,如果请求的 URL 是 https://caddy.xxxx.fun/hello/world,那么重定向后的 URL 将是 https://baidu.com/hello/world。
第二步:重启caddy
第三步:测试
踩坑
80、443端口未开放导致证书申请失败
查看日志日过证书申请失败的话。
当Caddy在Docker容器中运行时,它尝试通过尺度的HTTP和HTTPS端口(即80和443端口)来验证域名所有权。如果Docker容器的80端口和443端口没有正确袒露给外部访问,Caddy在尝试验证域名时会失败,导致证书申请失败。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
徐锦洪
金牌会员
这个人很懒什么都没写!
楼主热帖
Oracle夺命连环25问,你能坚持第几问? ...
马丽明:选择超融合架构的三个要素 ...
彻底卸载SQL Server
【计算机网络】TCP为什么需要3次握手 ...
java数据库开发与实战应用,2022最值得 ...
漏洞扫描工具nessus、rapid7 insightvm ...
学了这么久的高并发编程,连Java中的并 ...
p6 BufferedInputStream 和 BufferedOu ...
为什么MySQL单表不能超过2000万行? ...
WPF工控组态软件之冷却塔和空气压缩机 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表