本文将介绍使用 frp 实现反向代理。
本文档介绍如何使用frp进行反向代理,实现了边缘实例通过ssh登录到中心内网实例,以及通过边缘实例来转发HTTP请求到中心实例。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp github 地址:https://github.com/fatedier/frp
暂定边缘实例为A,中心云实例为B。
本文以v0.49.0版本为例,下一步骤都需要在实例A和B上面执行。
wget https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_amd64.tar.gz
如果下载其他版本可以在github上面来下载:https://github.com/fatedier/frp
2. 解压安装包
tar -zxvf frp_0.49.0_linux_amd64.tar.gz
cd frp_0.49.0_linux_amd64
frps.ini
文件vi frps.ini
[common] bind_port = 7000 dashboard_port = 7500 token = LdBlojOZkSjHMuo8! dashboard_user = admin dashboard_pwd = admin vhost_http_port = 8080
bind_port
表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。dashboard_port
是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500。token
是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。dashboard_user
和dashboard_pwd
表示打开仪表板页面登录的用户名和密码,自行设置即可。vhost_http_port
用于反向代理HTTP主机时使用。vim /etc/systemd/system/frps.service
,将下列内容粘贴到frps.service
文件中。[Unit] Description = frps After = network.target syslog.target Wants = network.target [Service] Type = simple ## 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /root/frp_0.49.0_linux_amd64/frps -c /root/frp_0.49.0_linux_amd64/frps.ini [Install] WantedBy = multi-user.target
使用 systemd 命令,启动frps 。
systemctl start frps
cd frp_0.49.0_linux_amd64
frpc.ini
文件vi frpc.ini
[common] server_addr = x.x.x.x #服务器A的公网地址 server_port = 7000 token = LdBlojOZkSjHMuo8! [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 [web] type = http local_port = 80 custom_domains = www.test.com
server_addr
为A实例的公网IP地址,填入即可。server_port
为服务器端口,填入你设置的端口号即可,如果未改变就是7000 。token
是你在服务器上设置的连接口令,原样填入即可。local_ip
和 local_port
配置为本地需要暴露到公网的服务地址和端口。若有其他配置可以参考文档:
https://github.com/fatedier/frp/blob/dev/conf/frpc_full.ini
vim /etc/systemd/system/frpc.service
,将下列内容粘贴到frps.service
文件中。[Unit] Description = frpc After = network.target syslog.target Wants = network.target [Service] Type = simple ## 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /root/frp_0.49.0_linux_amd64/frpc -c /root/frp_0.49.0_linux_amd64/frpc.ini [Install] WantedBy = multi-user.target
使用 systemd 命令,启动frpc。
systemctl start frpc
在A机器,执行以下命令,会跳转到B机器上面
ssh -p 6000 user@x.x.x.x #这里边缘实例的内网地址和公网地址都可以访问。
在个人PC中配置A机器的IP地址映射www.test.com,访问www.test.com是否能访问成功。