一、概述
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
需要公网ip搭建服务端建立隧道,本文记录通过nginx代理frps实现http的内网穿透的步骤。
二、环境
服务端环境,文档记录以下域名及服务器ip均非真实信息
域名:frptest1.com
*.frptest1.com ->172.164.145.12
服务器:ip 172.164.145.12
开放端口 80、443、7000
Nginx
三、服务端
1、下载安装
curl -O https://github.com/fatedier/frp/releases/download/v0.51.1/frp_0.51.1_linux_amd64.tar.gz
tar -Czxvf /usr/local/ frp_0.51.1_linux_amd64.tar.gz
mv frp_0.51.1_linux_amd64 frps
2、参数设置
vi /usr/local/frps/frps.ini
#frps.ini 内容如下
[common]
bind_port = 7000
#http服务端代理端口
vhost_http_port = 7001
#frp仪表盘配置
dashboard_port = 7002
dashboard_user = admin
dashboard_pwd = admin
#frp连接认证token
token = 1234567
#frp日志设置
log_file = /log/frps/frps.log
log_level = warn
log_max_days = 7
#域名设置
subdomain_host = frptest1.com
3、设置开机启动
vi /etc/systemd/system/frps.service
systemctl enable frps --now
#frps.service内容如下
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frps/frps -c /usr/local/frps/frps.ini
[Install]
WantedBy = multi-user.target
四、客户端
1、下载安装
https://github.com/fatedier/frp/releases
2、参数配置
设置frpc.init
[common]
server_addr = frptest1.com
server_port = 7000
#与服务端一致
token = 123456
#本地web设置
[web]
type = http
local_port = 8083
subdomain = test
#custom_domains = frptest1.com
subdomain:设置基于subdomain_host的子域名 test.frptest1.com
custom_domains:直接设置域名访问
3、运行客户端
frpc
#frpc -c frpc.ini
五、Nginx代理
# frp的接收http请求的反向代理
server {
listen 80;
server_name frptest1.com *.frptest1.com;
location / {
#frp监听的http端口,vhost_http_port
proxy_pass http://localhost:7001;
#********* host配置很重要,这个关系到代理是否正常访问 *********
#这里将$host改为域名 test.frptest1.com,这样通过nginx代理可以通过ip+端口访问,不再需要备案域名
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
};
Comments NOTHING