frp内网穿透

烂柯 发布于 2023-07-21 86 次阅读


一、概述

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";
    }
};
烂柯

最后更新于 2023-07-21