本文成因:我之前已经写过多个frp+https的文章,但因为frp版本升级后,更换了配置文件,其格式和之前差别比较明显,其次,之前的教程也过于繁杂,因此做出更新和改进。主要是展示各部分的配置文件,不在对配置原理进行介绍。 对原理感兴趣的,可以参看我之前的文章。
使用frp结合nginx实现对https的反向代理支持_frp+nginx反向代理-CSDN博客
利用frps搭建本地自签名https服务的透传_frp ssl-CSDN博客
一、frps 服务端frps.toml配置
该服务器自身运行着一个web,所以,不占用其80端口 ; 域名为 www.test-service.com
cat /etc/frp/frps.toml
bindPort = 7000
vhostHTTPSPort = 443
vhostHTTPPort = 8080
二、frps 服务端 nginx配置
cat /etc/nginx/conf.d/test1.conf
server {
listen 80 ;
listen [::]:80 ;
server_name test1.test-service.com;
rewrite ^/(.*)$ https://test1.test-service.com:443/$1 permanent;
# location / {
# proxy_pass http://127.0.0.1:443;
# }
}
注:仅需要将域名部分替换掉即可,也就是 test1.test-service.com 替换成你自己的
三、frpc 客户端 nginx配置
server {
listen 55580 default_server; ## 不影响
listen [::]:55590 default_server; ## 不影响
# SSL configuration
#
listen 32443 ssl default_server; ## 指定SSL服务的端口
listen [::]:32443 ssl default_server; ## 指定SSL服务的端口
#ssl证书的pem文件路径
ssl_certificate /home/SSL/web.crt;
#ssl证书的key文件路径
ssl_certificate_key /home/SSL/web.key;
#web服务的根目录
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
注:这里最好改一下ssl listen 的端口号,如果客户端上有多个web服务,则每个web服务要使用不同的配置文件名称和差异化的端口号
四、frpc 客户端frpc.toml配置
cat /etc/frp/frpc.toml
serverAddr = "www.test-service.com"
serverPort = 7000
[[proxies]]
name = "ssh-t1"
type = "tcp"
localIP = "127.0.0.1"
localPort = 32222
remotePort = 32222
[[proxies]]
name = "web-1"
type = "https"
localPort = 32443
customDomains = ["test1.test-service.com"]
五、重启相关服务,测试是否成功
分别重启 frps 服务端的 frps 和nginx服务,以及 客户端的frpc服务和nginx服务
## 在frps 服务器上
systemctl restart frps
systemctl restart nginx
## 在frpc 服务器上(局域网中)
systemctl restart frpc
systemctl restart nginx
浏览器中打开 https://test1.test-service.com 测试是否成功