使用 Frp https2http 为你的 Web 服务实现 HTTPS 支持

工作原理

使用 frp 让 Web 服务支持https 的流程是一个典型的反向代理服务器的工作流程。

img

为了体现内网穿透,这里我们准备了一台服务端和一台客户端,系统分别是CentOS和WindowsServer,具体情况具体分析吧

需要注意的是这里的证书是放在客户端下的

服务端配置(Linux上frps.ini)

1
2
3
4
5
6
7
8
9
[common]
bind_port=7000 #服务端端口
#privilege_token=******* #客户端连接凭证
max_pool_count=5 #最大连接数
vhost_http_port = 80 #客户端http映射的端口
vhost_https_port = 443 #客户端https映射的端口
dashboard_port=7505 #服务端看板的访问端口
dashboard_user=root #服务端看板账户
dashboard_pwd=*** #服务端看板账户密码

配置完之后运行服务端

Linux : ./frps -c ./frps.ini

Windows : 进入目录frps.exe

服务端配置完成

客户端配置(frpc.ini)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server_addr = 192.168.100.100                    #服务端的IP地址,好像也可以写域名,没试过
server_port = 7000 #服务端端口

[test_http] #Http服务,映射的是服务端http80端口
type = http #服务方式
local_ip = 127.0.0.1 #服务端ip,可写本地,局域网等做反向代理的ip
local_port = 8000 #服务端端口
custom_domains = test.test.com #需要反向代理的域名,就是服务端要代理的域名

[test_https] #Https服务,映射的是服务端https443端口
type = https #服务方式
local_ip = 127.0.0.1 #服务端ip,可写本地,局域网等做反向代理的ip
local_port = 8000 #服务端端口
custom_domains = test.test.com #需要反向代理的域名,就是服务端要代理的域名

# 以下为https新加的内容
plugin = https2http #将 https请求转换成http请求后再发送给本地服务
plugin_local_addr = 127.0.0.1:8000 #转换http后的端口

#证书相关配置
plugin_crt_path = xxx/test.test.com/fullchain1.crt #linux下生成的证书为fullchain.pem格式,复制到Windows上改成.crt后缀即可
plugin_key_path = xxx/test.test.com/privkey1.key #linux下生成的证书为privkey.pem格式,复制到Windows上改成.key后缀即可
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp

配置完之后运行服务端

Linux : ./frpc -c ./frpc.ini

Windows : 进入目录frpc.exe

服务端配置完成

关于frp命令的后台启动方法

使用systemctl来控制启动
```sudo vim /lib/systemd/system/frps.service````

写入以下内容

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/yourpath/frps -c /yourpath/frps.ini
[Install]
WantedBy=multi-user.target

然后就启动frps
sudo systemctl start frps
再打开自启动
sudo systemctl enable frps

如果要重启应用,可以这样,sudo systemctl restart frps

如果要停止应用,可以输入,sudo systemctl stop frps

如果要查看应用的日志,可以输入,sudo systemctl status frps

就可以运行了

frp官方文档:https://github.com/fatedier/frp/blob/master/README_zh.md 建议多读官方的文档

img

frps完整版配置文件:https://github.com/fatedier/frp/blob/master/conf/frps_full.ini

frpc完整版配置文件:https://github.com/fatedier/frp/blob/master/conf/frpc_full.ini