内网穿透工具frp客户端自定义子域名访问配置



前提

A: 公网电脑
B: 内网电脑

下载

releases)下载系统对应的压缩包,Mac可使用darwin amd64的包,在公网电脑和本地电脑各放一份。

配置

公网电脑上frps.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
# 用于接收 frpc 连接的端口
bind_port = 7000
# 通过此端口访问http服务
vhost_http_port = 8080
# 日志文件输出位置
log_file = ./frps.log
# 日志等级
log_level = info
# 域名
subdomain_host = example.com
# frp管理后台端口
dashboard_port = 7500
# frp管理后台用户名
dashboard_user = admin
# frp管理后台密码
dashboard_pwd = admin

本地电脑上frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
[common]
# 公网电脑IP
server_addr = 111.111.111.111
# frp连接的端口
server_port = 7000

[web]
type = http
# 本地http服务端口
local_port = 8080
# 子域名前缀, 子域名前缀里不要使用下划线"_",不然可能会出现莫名其妙的400错误可以用"-"代替。
subdomain = iblogc

配置域名example.com的A记录的泛解析
*.example.com指向公网电脑IP111.111.111.111

运行

  1. 在内网电脑B上8080端口运行http服务
  2. 在公网电脑上运行(Windows电脑上运行请去掉./

    1
    ./frps -c ./frps.ini
  3. 在本地电脑上运行(Windows电脑上运行请去掉./

    1
    ./frpc -c ./frpc.ini

成功

在任何一台能联网的机器上访问 http://iblogc.example.com:8080 即可访问内网电脑B上的http服务。
在任务一台能联网的机器上访问111.111.111.111:7500即可访问frp的管理后台。

frps服务端与nginx可共用80端口

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name *.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://$host/ http://$http_host/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}