Caddy2学习笔记——Caddy2反向代理Frp内网穿透和反向代理PVE

一、环境概述

  1. 本人拥有一个国内云服务商的云主机和一个备案好的域名,通过caddy2来作为web服务器。

  2. 我的云主机是公网ip,地址为:43.126.100.78;我备案好的域名是:hotgirl.com 。后面的文章都以上述的ip和域名来进行讲解。

  3. 域名 hotgirl.com 已经通过云服务商的域名解析功能,解析到43.126.100.78。

二、安装Frp服务端

我这里安装的是docker版本的frps。

  1. 创建目录
#创建frps目录
mkdir -p /docker/frps

  1. 配置文件
[common]
bind_port = 1600 
kcp_bind_port = 1600
token = YU&*JB%
dashboard_port = 2500 
dashboard_user = root 
dashboard_pwd = root 

vhost_http_port = 8108
vhost_https_port = 4334


authentication_timeout=0
privilege_mode=true

max_pool_count = 50
tcp_mux=true
log_file = ./frps.log  
log_level = info
log_max_days = 3

subdomain_host = frp.hotgirl.com

上述配置文件存为frps.ini ,然后放入/docker/frps 路径内。

  1. docker-compose.yaml文件
version: '3'
services:
    frps:
        restart: always
        network_mode: host
        volumes:
            - './frps.ini:/etc/frp/frps.ini'
        container_name: frps
        image: snowdreamtech/frps
  1. 创建容器
    cd到“/docker/frps”这个目录下,执行“docker-compose up -d” 命令。
cd /docker/frps

docker-compose up -d

三、解析域名和开放端口

  1. 域名解析
    这里我们用“frp.hotgirl.com” 来作为内网frp穿透的服务地址。首先在域名服务商的解析服务中,添加A记录,将把 “frp.hotgirl.com” 解析到云主机的公网ip43.126.100.78。然后将*.frp 用CNAME解析到“frp.hotgirl.com”。如下图所示:
    在这里插入图片描述
    2.开发端口
    需要在你的云服务器的防火墙,放行 frps.ini 这个文件中包含的 所有端口。
firewall-cmd --add-port=1600/tcp --permanent

firewall-cmd --add-port=2500/tcp --permanent

firewall-cmd --add-port=8108/tcp --permanent

firewall-cmd --add-port=4334/tcp --permanent

#重启防火墙
firewall-cmd --reload

然后在云主机的“配置安全组规则” 中,手动添加上述四个端口,这里我就不截图了,可以参考 Caddy2反向代理docker版本的headscale 这篇文章中的第四部分内容。

四、Frp客户端配置

客户端根据自己的平台来选择服务安装或者docker安装,都一样。这里贴一下配置:

[common]
server_addr = 43.126.100.78 #远程frp服务器IP
server_port = 1600 #远程frp服务器端口
token = YU&*JB% #远程frp服务器token

#穿透内网的OpenWRT
[http_OpenWRT]
type = http
local_ip = 192.168.1.1 #根据自己内网网段修改
local_port = 80 #OpenWRT管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = opt #匹配服务端配置的subdomain_host,随后通过opt.frp.hotgirl.com 来访问内网的OpenWRT

#穿透内网的NAS
[http_Nas]
type = http
local_ip = 192.168.1.7 #根据自己内网网段修改
local_port = 5000 #nas管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = nas #匹配服务端配置的subdomain_host,随后通过nas.frp.hotgirl.com 来访问内网的nas

五、Caddy2反向代理Frp

根据我前面的文章 Caddy2的安装、部署和编译小白教程 这篇文章中讲解的,修改Caddyfile这个文件:

vim /etc/caddy/Caddyfile

加入以下代码:

*.frp.hotgirl.com {
        tls {
            dns alidns {
                access_key_id "ali key_id"
                access_key_secret "ali key_secret"
            }
        }
        reverse_proxy 127.0.0.1:8108{
            header_up X-Real-IP {http.request.remote}
            header_up X-Forwarded-For {http.request.remote}
            header_up X-Forwarded-Port {http.request.port}
            header_up X-Forwarded-Proto {http.request.scheme}
        }
}

因为我内网的web服务多,所以我就用“ *.frp.hotgirl.com ”这种简便的方式,但是这种泛域名需要用caddy的dns插件实现,需要自行编译,编译的教程已经在Caddy2的安装、部署和编译小白教程 这篇文章中讲过了,不明的同学可以回看一下。当然如果,你的内网的web服务不是很多,也没有自行编译caddy,用的还是官方标准版本,那么还可以一个web服务一个web服务的写,比如内网的OpenWRT和内网的nas,就可以这样写:

opt.frp.hotgirl.com {
        tls  112244@qq.com
        reverse_proxy 127.0.0.1:8108{
            header_up X-Real-IP {http.request.remote}
            header_up X-Forwarded-For {http.request.remote}
            header_up X-Forwarded-Port {http.request.port}
            header_up X-Forwarded-Proto {http.request.scheme}
        }
}

nas.frp.hotgirl.com {
        tls  112244@qq.com
        reverse_proxy 127.0.0.1:8108{
            header_up X-Real-IP {http.request.remote}
            header_up X-Forwarded-For {http.request.remote}
            header_up X-Forwarded-Port {http.request.port}
            header_up X-Forwarded-Proto {http.request.scheme}
        }
}

六、Caddy2反向代理Frp内网PVE

  1. 说明
    大家都知道,内网PVE的管理端口是8006,而且是https,如果直接用上面反代Frp的方式是不行的。

  2. 用Frp中的TCP模式
    那么修改后的客户端的frpc.ini配置文件如下:

[common]
server_addr = 43.126.100.78 #远程frp服务器IP
server_port = 1600 #远程frp服务器端口
token = YU&*JB% #远程frp服务器token

#穿透内网的OpenWRT
[http_OpenWRT]
type = http
local_ip = 192.168.1.1 #根据自己内网网段修改
local_port = 80 #OpenWRT管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = opt #匹配服务端配置的subdomain_host,随后通过opt.frp.hotgirl.com 来访问内网的OpenWRT

#穿透内网的NAS
[http_Nas]
type = http
local_ip = 192.168.1.7 #根据自己内网网段修改
local_port = 5000 #nas管理地址的端口
remote_port = 8108 #远程frp服务器的http服务端口号
#custom_domains = 自定义配置的域名
#我这里用的子域名模式,只需要在服务端配置了“subdomain_host = frp.hotgirl.com”
#后面客户端只需要填写subdomain = XXX
#就可以通过 XXX.frp.hotgirl.com 来访问内网的web服务了
subdomain = nas #匹配服务端配置的subdomain_host,随后通过nas.frp.hotgirl.com 来访问内网的nas

#穿透内网的PVE
[tcp]
type = tcp
local_ip = 192.168.1.2 #PVE的管理页面地址
local_port = 8006      #PVE的管理页面的端口
remote_port = 8777     #映射到云服务器上

上面这个 “8777” 端口,可以自定义,根据自己需要修改。但是还是需要再云服务器上,放行这个端口:

firewall-cmd --add-port=8777/tcp --permanent

#重启防火墙
firewall-cmd --reload

然后在云主机的“配置安全组规则” 中,手动添加上述8777端口,这里我就不截图了,可以参考 Caddy2反向代理docker版本的headscale 这篇文章中的第四部分内容。

  1. 解析PVE的域名
    在域名服务商的解析服务中,添加A记录,将把 “pve.hotgirl.com” 解析到云主机的公网ip43.126.100.78。这一步万不能漏掉,因为在caddy中,每一个代理都需要域名指向明确的公网IP地址。
  2. 再次修改Caddyfile
    根据我前面的文章 Caddy2的安装、部署和编译小白教程 这篇文章中讲解的,修改Caddyfile这个文件:
vim /etc/caddy/Caddyfile

修改为以下代码:

opt.frp.hotgirl.com {
        tls  112244@qq.com
        reverse_proxy 127.0.0.1:8108{
            header_up X-Real-IP {http.request.remote}
            header_up X-Forwarded-For {http.request.remote}
            header_up X-Forwarded-Port {http.request.port}
            header_up X-Forwarded-Proto {http.request.scheme}
        }
}

nas.frp.hotgirl.com {
        tls  112244@qq.com
        reverse_proxy 127.0.0.1:8108{
            header_up X-Real-IP {http.request.remote}
            header_up X-Forwarded-For {http.request.remote}
            header_up X-Forwarded-Port {http.request.port}
            header_up X-Forwarded-Proto {http.request.scheme}
        }
}

pve.hotgirl.com {
	   encode gzip
        tls 112244@qq.com
        reverse_proxy  https://127.0.0.1:8777{
				transport http {
                        tls_insecure_skip_verify
                }
		}
}

不出意外,输入“https://pve.hotgirl.com” 就可以访问内网的PVE了。
在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值