frp内网穿透-配合Nginx的服务端与客户端搭建

frp内网穿透-配合Nginx的服务端与客户端搭建

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp官方文档

版本说明

  • frp: v0.35.1
  • Nginx: 1.18.0
  • Server服务端: CentOS 7.6
  • Client客户端: Windows 10

下载frp

前往GitHub frp release页面下载对应版本的frp压缩包

GitHub地址

服务端安装frp

1. 使用工具或rz命令上传压缩包至服务端

2. 解压并重命名

1
2
3
4
5
6
# 解压至指定目录
tar -zxvf frp_0.35.1_linux_amd64.tar.gz -C /usr/local/

# 修改文件夹名称
cd /usr/local/
mv frp_0.35.1_linux_amd64 frp

3. 修改服务端配置文件frps.ini

1
vi frp/frps.ini

配置文件示例:

1
2
3
4
5
6
7
8
9
[common]
bind_port = 7000
vhost_http_port = 7100
vhost_https_port = 7443
subdomain_host = xxx.example.com

dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

配置参数详情参考官方文档

4. 设置frps后台运行及开机启动

创建systemd配置文件

1
vi /etc/systemd/system/frps.service

写入以下内容:

1
2
3
4
5
6
7
8
9
[Unit]
Description=frps daemon

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy=multi-user.target

启动并设为开机运行

1
2
systemctl start frps
systemctl enable frps

设置Nginx反向代理

1. 添加Server配置至Nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 80;
server_name *.xxx.example.com xxx.example.com;

charset utf-8;

location / {
proxy_pass http://127.0.0.1:7100;
proxy_set_header Host $host:80;
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";

proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
}

2. 前往域名控制台增加解析记录

客户端安装frp

1. 直接解压frp_0.35.1_windows_amd64.zip

2. 进入目录修改frpc.ini配置文件

配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 7000
admin_port = 7070
admin_user = admin
admin_pwd = admin

[web-a]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = a

[web-b]
type = http
local_ip = 127.0.0.1
local_port = 8081
subdomain = b

[desktop]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
custom_domains = xxx.example.com

配置参数详情参考官方文档:
客户端配置
代理配置

3. 设置后台运行与开机启动

下载WinSw,下载地址:WinSw
将其重命名为winsw并copy至与frpc.exe同级目录下。

并在该目录下新建一个文档winsw.xml

1
2
3
4
5
6
7
8
<service>  
<id>frp</id>
<name>frp</name>
<description>用frp发布本地电脑网站到外网</description>
<executable>frpc</executable>
<arguments>-c frpc.ini</arguments>
<logmode>reset</logmode>
</service>

在当前目录下以管理员身份打开cmd控制台,输入命令安装服务:

1
winsw install

使用Win + R输入services打开服务面板,可以看到frp服务已经安装,启动并设置为自动启动即可:

卸载服务命令:

1
winsw uninstall

至此已经完成全部安装步骤,接下来可以测试效果。

查看运行状态

客户端

打开浏览器输入http://localhost:7070打开客户端控制台,输入客户端配置frpc.ini中的账号密码,查看客户端运行状态:

服务端

输入xxx.example.com:7500打开服务端控制台,输入服务端配置frps.ini中的账号密码,查看服务端运行状态:


frp内网穿透-配合Nginx的服务端与客户端搭建
https://www.magese.com/2021/03/16/frp内网穿透-配合Nginx的服务端与客户端搭建/
作者
Magese
发布于
2021年3月16日
许可协议