`
m635674608
  • 浏览: 4936183 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

利用 Caddy 轻松实现反向代理/镜像(支持自签SSL证书)

 
阅读更多

  Caddy是一个使用 Go语言写的 HTTP Server,开发时间并不长,在性能上或许比不上 Nginx,但是在 上手难度/配置难度 上面简单的不行不行的。

    并且 Caddy支持 自动签订Let’s Encrypt SSL证书,什么都不需要你管,只需要提供一个邮箱,剩下的他会自己申请、配置和续约 SSL证书!

 

本文转载自 逗比根据地 » 利用 Caddy 非常简单的部署 反向代理/镜像(支持自签SSL证书)


官网地址
https://caddyserver.com
 
部署 Caddy
    Caddy 是 Go语言编译好的二进制程序,所以只有一个 Caddy 文件(还需要生成一个配置文件),但是为了管理方便,所以我做了个一键脚本。
wget -N --no-check-certificate https://softs.pw/Bash/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
# 如果上面这个脚本无法下载,尝试使用备用下载:
wget -N --no-check-certificate https://raw.githubusercontent.com/pipesocks/install/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

配置文件

    Caddy的特点之一就是,配置文件非常的简单,继续下面看就知道了。

  • 服务器IP 反向代理

    下面是一个,用你服务器的IP 来反向代理一个 http 协议的网站 http://www.baidu.com

    一次性复制以下全部代码,并粘贴到SSH中执行:

echo ":80 {
gzip
proxy / http://www.baidu.com
}" > /usr/local/caddy/Caddyfile

  • 域名 反向代理 HTTP

    下面是一个,用你的域名 来反向代理一个 http 协议的网站 http://www.baidu.com
以下所有示例域名为 toyoo.ml ,请注意替换为 自己的域名 !
    一次性复制以下全部代码,并粘贴到SSH中执行:
echo "http://toyoo.ml {
gzip
proxy / http://www.baidu.com
}" > /usr/local/caddy/Caddyfile
    如果你需要反向代理 HTTPS 协议的网站,比如 https://www.baidu.com ,那么继续看下面步骤。

  • 域名 反向代理 HTTPS

    如果你有 SSL证书和密匙的话,把 SSL证书(xxx.crt)和密匙(xxx.key)文件放到 /root 文件夹下(也可以是其他文件夹,自己改下面代码),然后这样做:
一次性复制以下全部代码,并粘贴到SSH中执行:
echo "https://toyoo.ml {
gzip
tls /root/xxx.crt /root/xxx.key
proxy / https://www.baidu.com
}" > /usr/local/caddy/Caddyfile
    如果你没有 SSL证书和密匙,那么你可以这样做:
    下面的 xxxx@xxx.xx 改成你的邮箱,同时需要注意的是,申请 SSL证书前,请务必提前解析好域名记录(解析后最好等一会,以全球生效),否则 Caddy会申请并配置失败!
一次性复制以下全部代码,并粘贴到SSH中执行:
echo "https://toyoo.ml {
gzip
tls xxxx@xxx.xx
proxy / https://www.baidu.com
}" > /usr/local/caddy/Caddyfile
    如果一切正常,那么Caddy会自动帮你申请 SSL证书并配置好,而且会定时续约SSL证书 和 强制 http重定向至https !
    上面这两段示例中,只要把 https://www.baidu.com 改成 https://www.google.com ,即可实现反向代理 Google了!
需要注意的是,因为墙会检测关键词,所以请务必使用 HTTPS协议,不要使用 HTTP协议,否则很快就会被墙!

  • HTTP重定向为HTTPS

    当你是手动指定 SSL证书和密匙 来配置的话,Caddy只会监听 443端口(https),并不会自动设置 80端口(http)的重定向(如果是Caddy自动申请的SSL证书,那么就自动做好了),如果要做重定向的话,可以这样做:
    下面的示例代码中,是把 http://toyoo.ml、http://233.toyoo.ml、https://666.toyoo.ml 三个域名都重定向到了 https://toyoo.ml 。
    一次性复制以下全部代码,并粘贴到SSH中执行:
echo "http://toyoo.ml ,http://233.toyoo.ml ,https://666.toyoo.ml {
redir https://toyoo.ml{url}
}
https://toyoo.ml {
gzip
tls /root/xxx.crt /root/xxx.key
proxy / https://www.baidu.com
}" > /usr/local/caddy/Caddyfile
    修改完 Caddy的配置文件后,重启 Caddy即可。
service caddy restart

使用说明

启动:service caddy start
停止:service caddy stop
重启:service caddy restart
查看状态:service caddy status
查看Caddy启动日志: tail -f /tmp/caddy.log

Caddy配置文件位置:/usr/local/caddy/Caddyfile

 

卸载 Caddy
    执行以下代码后,会问你是否确定要卸载 Caddy,输入 y 即可。
    注意:卸载 Caddy 会把Caddy的所有虚拟主机文件夹和配置文件删除,并且不可恢复!
wget -N --no-check-certificate https://softs.pw/Bash/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh uninstall
    # 如果上面这个脚本无法下载,尝试使用备用下载:
wget -N --no-check-certificate https://raw.githubusercontent.com/pipesocks/install/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh uninstall

其他说明

  • 单网站/多网站

    当然,上面的几个示例,实际上都算是单网站。
    最后一句代码都是 }" > /usr/local/caddy/Caddyfile ,也就是清空了 Caddy配置文件,然后再写入了配置信息。
    如果你要设置多个网站,那么把最后一句代码改成 }" >> /usr/local/caddy/Caddyfile 即可,注意是把 > 改成 >> ,这样就不会清空原来的配置信息了,而是会把要添加的配置信息加到配置文件最后!

  • 网页加密

    什么?担心自己做的镜像不小心爆露被滥用?没事,设置一下用户名和密码即可,只需要在上面的示例中加入这行代码:

 

basicauth / user passwd
    user指的是 用户名,passwd指的是 用户名密码,设置这个后,访问网页就需要输入用户名和密码来验证了!
    修改配置文件后,记得重启 Caddy !
    配置示例:
echo "https://toyoo.ml {
gzip
basicauth / user passwd
tls /root/xxx.crt /root/xxx.key
proxy / https://www.baidu.com
}" > /usr/local/caddy/Caddyfile

  • 记录日志

    如果你想要记录网站访问日志,那么只需要在上面的示例中加入这行代码:
log /tmp/caddy_1.log
    修改配置文件后,记得重启 Caddy !
    配置示例:
echo "https://toyoo.ml {
gzip
log /tmp/caddy_1.log
tls /root/xxx.crt /root/xxx.key
proxy / https://www.baidu.com
}" > /usr/local/caddy/Caddyfile

echo "https://toyoo.ml {
gzip
log /tmp/caddy_1.log
tls /root/xxx.crt /root/xxx.key
proxy / https://www.baidu.com

}" > /usr/local/caddy/Caddyfile

 

    日志文件的位置和名字可以自己改,放到 /tmp 文件夹的话,每次重启都会自动清空日志的。

  • Caddy启动失败,打开 http://ip 显示的是 It works !

    一些系统会自带 apache2 ,而 apache2 会占用80端口,导致Caddy无法绑定端口,所以只要关掉就好了。
netstat -lntp
# 我们可以通过这个命令查看是不是被其他软件占用了 80 端口。
    不过 apache2 会默认开机自启动,如果不需要可以关闭自启动或者卸载 apache2 。

停止 Apache2
service apache2 stop
# 尝试使用上面这个关闭,如果没效果或者提示什么错误无法关闭,那就用下面这个强行关闭进程。

kill -9 $(ps -ef|grep "apache2"|grep -v "grep"|awk '{print $2}')

 

取消开机自启动
# 以下代码仅限 Debian/Ubuntu 系统 #
update-rc.d -f apache2 remove

卸载 Apache2
# 以下代码仅限 Debian/Ubuntu 系统 #
apt-get remove --purge apache2
    关闭 Apache2后,就可以尝试启动 Caddy ,并试试能不能打开网页。
service caddy start

 

http://blog.jialezi.net/?post=38

分享到:
评论

相关推荐

    caddy-docker-proxy:Caddy作为Docker的反向代理

    该插件使caddy可用作Docker的反向代理。 它是如何工作的? 它扫描Docker元数据以查找指示该服务或容器应在球童上公开的标签。 然后,它会生成一个内存中的Caddyfile,其中包含指向每个Docker服务DNS名称或容器IP的...

    caddy-gen:Docker容器的自动Caddy反向代理

    为什么使用Caddy作为您的主要Web服务器非常简单。 但是,当您需要扩展应用程序时,Caddy限于其静态配置。 为了克服这个问题,我们使用docker-gen每次容器产生或死亡时生成配置。 现在扩展很容易!配置/选项caddy-gen...

    caddy_v1.0.0-beta1_windows_amd64_custom.zip

    caddy v1.0版本,win x64可用,Caddy中文文档https://dengxiaolong.com/caddy/zh/

    自部署IPA在线安装服务源码

    本仓库代码不包含SSL证书部分,由于苹果在线安装必须具备HTTPS,所以本程序必须运行在HTTPS反向代理后端。 最简单的办法开启完整服务,使用下面的配置替换 docker-compose.yml 文件: # ***** 更换所有 ...

    Caddy_caddy_

    Caddy 网页开发程序的配置文件

    linux-WEB服务器Caddy的Docker镜像内置dnspod插件

    WEB 服务器 Caddy 的 Docker 镜像,内置 dnspod 插件

    本地网站 代理 caddy

    本地网站 代理 caddy

    Caddy

    Caddy

    ansible-role-caddy:Ansible 角色来安装和配置 Caddy 代理

    球童 使用基本配置集安装以包含/etc/caddy/conf.d/* 。 希望使用 Caddy 的角色应将其配置文件放在该目录中。 此角色现在支持从存储库安装的 Caddy v2。 有一个任务文件可用于清理以前的 Caddy v1 安装。 它应该在...

    caddy-cache:球童缓存中间件

    该项目目前不受支持和维护。 它是为球童1开发的,不适用于较新的版本 球童缓存 这是一个用于的简单缓存插件 注意:尽管此插件可用于静态内容,但不建议使用。 静态内容不会带来什么好处。 当响应缓慢时(例如,使用...

    Ghost-over-Caddy:此摘要将通过Caddy Web服务器安装Ghost博客作为反向代理

    Ghost-over-Caddy:此摘要将通过Caddy Web服务器安装Ghost博客作为反向代理

    docker-caddy:https 的 docker 镜像

    对于 TLS 支持,caddy 需要一个证书文件。 当前的 ca-certificate.crt 文件来自 CoreOS alpha 660.0.0 安装。用法此图像旨在用作您的应用程序的基本图像。 使用FROM: groob/caddy:0.5.0构建一个新的 dockerfile ...

    caddy-script:Caddy安装脚本

    安装Caddy v2.2.1 安装PHP 7.4 安装MariaDB 使用systemd将Caddy注册为服务 使用file_server,gzip,zstd,php_fastcgi配置Caddyfile 安装WordPress [可选] 经过测试 Ubuntu 18.04 Ubuntu 20.04 用法 bash &lt...

    caddy_v0.11.0_linux_amd64_custom_personal.tar.gz

    Caddy服务器(或者Caddy Web)是一个开源的使用 GoLang 编写,支持 HTTP/2 的 Web 服务端。它使用 GoLang 标准库提供 HTTP 功能, Caddy 一个显著的特性是默认启用 HTTPS,它是第一个无需额外配置即可提供 HTTPS ...

    caddy-s3-proxy:球童的s3代理插件

    S3确实具有网站选项,在这种情况下,可以使用普通的反向代理来显示S3数据。 但是,有时这样做并不方便。 即使未在存储桶中配置网站访问权限,该模块也可以让您访问S3数据。 使用此插件制作球童版本 使用caddy 2,您...

    caddy-authz:Caddy-authz是Caddy的中间件,它基于访问控制策略阻止或允许请求

    凯迪·阿兹 凯蒂- AuthZ的是授权中间件,它是基于 。..." ...}或者 { order authz before respond}localhost {authz "/folder/to/caddy_binary/authz_model.conf" "/folder/to/caddy_binary/authz_policy.csv"r

    docker-bitwarden_rs-caddy-synology:Docker与Caddy在Synology上为Bitwarden_rs撰写

    这就是为什么将Bitwarden_rs服务器设置为不使用SSL的原因,因为它位于2个代理之后。 尽管已使其可以在Synology NAS上运行,但应在具有/没有较小改动的其他系统上运行。 文献资料 Bitwarden_RS维基 Caddy服务器2.0...

    caddy:Caddy Docker自定义映像

    Caddy Docker自定义映像 带有自定义模块的Caddy Docker容器 我拍了基本的球童泊坞窗图片; 在自定义模块下方添加了内容,并构建了自定义的caddy docker容器。 我只是遵循以下链接中的“构建自己的基于Caddy的图像”...

    cloudflocaddy:Cloudflare + Localhost + Caddy =本地SSL开发环境

    使用自动SSL为本地主机提供服务的Caddy容器。 配置 您需要使用以下环境变量创建docker-compose.override.yml文件: version : ' 3 ' services : cloudflocaddy : environment : CLOUDFLARE_API_KEY : API_KEY ...

    caddy_web服务器(添加filemanager版本)

    不知道为什么 caddy web 服务器官网把 filemanager 插件干掉了,这是我之前下载的Linux 64位环境下只带 filemanager 插件的版本,自己一直在用这个,感觉很方便,希望对大家有帮助; 版本号:caddy_v0.11.1_linux_...

Global site tag (gtag.js) - Google Analytics