FRP内网穿透和反向代理如何实现高效优化?
摘要:frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 本文将以暴露内网 Web 服务为例,实践 frp 的安装
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
本文将以暴露内网 Web 服务为例,实践 frp 的安装部署。更多应用场景,可见 frp 示例。
安装
frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件。
本文公网、内网机器都是 Linux x86_64,所以选择了 frp_0.39.0_linux_amd64.tar.gz。解压:
$ tar xzvf frp_0.39.0_linux_amd64.tar.gz
frp_0.39.0_linux_amd64/
frp_0.39.0_linux_amd64/frps
frp_0.39.0_linux_amd64/frps_full.ini
frp_0.39.0_linux_amd64/systemd/
frp_0.39.0_linux_amd64/systemd/frpc@.service
frp_0.39.0_linux_amd64/systemd/frps@.service
frp_0.39.0_linux_amd64/systemd/frpc.service
frp_0.39.0_linux_amd64/systemd/frps.service
frp_0.39.0_linux_amd64/LICENSE
frp_0.39.0_linux_amd64/frpc.ini
frp_0.39.0_linux_amd64/frpc_full.ini
frp_0.39.0_linux_amd64/frps.ini
frp_0.39.0_linux_amd64/frpc
公网
拷贝 frps 文件进公网机器,假设其 IP 为 x.x.x.x:
scp frps* ubuntu@x.x.x.x:
修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:
cat <<-EOF > ~/frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
EOF
安装 supervisor 进行部署,后台长期运行:
# 安装 supervisor
sudo apt install supervisor -y
# 添加配置
sudo -i
cat <<-EOF >> /etc/supervisor/supervisord.conf
[program:frps]
directory=/home/ubuntu
command=/home/ubuntu/frps -c /home/ubuntu/frps.ini
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=3
stdout_logfile=/var/log/frps_out.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/frps_err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment=
nocleanup=false
EOF
exit
# 更新服务
sudo supervisorctl update all
# 查看服务
sudo supervisorctl status all
内网
拷贝 frpc 文件进内网机器,假设其 IP 为 192.168.1.100:
scp frpc* ubuntu@192.168.1.100:
修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains。
