Frp内网穿透使用记录

在国内申请家用公网IP越来越困难,于是我想用阿里云服务器作为中转站,将内网服务器的服务暴露给外网,于是就用到了frp,特此记录。(之前阿里云服务器上用nginx配置了一些代理)

服务器结构

外网服务器frps.toml

1
bindPort = 7000

内网服务器frpc.toml

1
2
3
4
5
6
7
8
9
serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

此处remotePort 指的是外网要访问到公网IP服务器时要用的端口,包括安全组策略要开这个端口

localPort表示内网服务器本地运行的服务的端口

serverPort 固定7000, 这是两个服务器之间通信的端口

nginx配置

1
2
3
4
5
6
7
8
9
10
11
12
13
location /二级域名/ {

proxy_pass http://127.0.0.1:remotePort/; # 使用外部域名和端口

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 X-Forwarded-Proto $scheme;

}

笔记

启动服务

1
2
./frps -c ./frps.toml
./frpc -c ./frpc.toml

踩坑

frp 的http模式本质是tcp,如果用nginx来配置http和https直接用tcp 的type就可以了,如果用http或https配置,会在内网服务器再进行一遍代理的流程,会因为路径问题出现frp not found page。如果把ssl证书再在内网服务器配置一遍,会出现安全问题。

作者

kfzzzzzz

发布于

2025-01-25

更新于

2025-02-05

许可协议

评论