【知识拓展】通过服务器中转建立内网穿透,实现本地数据、网站的实时传输。
问题描述
地图切片数据太大传输至服务器时间耗时较久,本地使用ArcGIS-server 发布的地图服务无法被互联网访问,如何通过中转服务器实现互联网访问本地地图服务。
1、内网穿透软件FRP安装
FRP(Fast Reverse Proxy)是一个专注于内网穿透的高性能的反向代理应用,使用Go语言编写。它允许你将内网(例如家庭网络或公司内部)的服务暴露到公网上,使得公网用户可以访问内网服务。FRP支持多种协议,包括TCP、UDP、HTTP、HTTPS,甚至支持点对点穿透。
1、主要特性:
①跨平台:由于使用Go语言编写,FRP可以在多种平台上运行,包括Windows、Linux、macOS等。
②配置灵活:通过简单的配置文件,可以轻松设置各种类型的代理。
③安全性:支持Token认证,确保连接的安全性。还可以通过TLS加密传输。
2、多种代理类型:
④TCP:将内网的TCP服务暴露到公网。
⑤UDP:支持UDP协议的转发。
⑥HTTP:将内网的HTTP服务暴露到公网,并支持域名绑定和URL路由。
⑦HTTPS:类似HTTP,但支持HTTPS协议。
⑧P2P穿透:在某些情况下可以建立点对点连接,提高传输效率。
⑨Web面板:FRP提供了一个可选的Web控制台,用于查看和管理代理状态。
3、基本架构:
FRP通常由两部分组成:
①服务端(frps):运行在具有公网IP的服务器上,接收来自客户端的连接,然后将公网请求转发到内网。
②客户端(frpc):运行在内网机器上,与服务器建立连接,并将本地服务暴露给服务器。
4、软件地址:
https://github.com/fatedier/frp/releases/tag/v0.64.0
5、示例:
本地window系统发布的地图服务,通过Linux系统的服务器中转,使得公网可以访问本地window的地图服务。
下载如图下所示两个文件:

新建两个文件夹以frpc和frps命名,将压缩包里的frpc相关的文件名放进一个文件夹,frps相关文件放进另一个文件夹。(.toml为配置文件)


6、配置frpc.toml 和 frps.toml文件
frpc.toml

1、serverPort为服务器端口,可以改为7001等其它未占用端口,该端口是 frpc 客户端主动连接 frps 服务端 的端口。它负责建立和管理控制通道,不直接传输用户数据。
2、localPort是本地内网中真正提供服务的应用程序所监听的端口,(例如可以改为ArcGIS Server所监听的端口6080),frpc 的最终目标就是将数据转发到这个端口。
3、remotePort对应的是服务器端口,是公网用户实际访问的端口,当 frps 通过 7000端口收到代理配置后,就会在remotePort端口上“监听”。公网用户连接 serverAddr:remotePort(图中表示为127.0.0.1:6000),frps 就会将数据通过已建立的通道转发给对应的 frpc。
简单来说:7000是管理通道,6000 是公网入口,22 是内网终点。
4、一个外网用户访问您的 ArcGIS 服务的完整链路是:
用户 → 访问 serverPort:remotePort → frps (通过7000端口建立的通道) → 转发给 frpc → frpc 访问内网 localIP: localPort→ 服务响应并原路返回。
frps.toml

frps.toml中的bindPort的端口号要和frpc.toml中的serverPort的端口号一致。
2、配置服务端(Linux系统)
1、将frps文件通过FinalShell拖入Linux服务器中,并cd 至该目录下。

2、启动frps
./frps -c ./frps.toml
成功如图所示:

3、客户端连接服务器
本地为windows,不能直接用frp_0.64.0_linux_amd64下的frpc执行文件,需要从下载的frp_0.64.0_windows_amd64中把frpc.exe放到刚刚建的frpc文件夹中。如图所示:

在此文件夹中打开Windows PowerShell:

执行命令运行:
frpc.exe -c frpc.toml
这样通过访问服务器ip+映射端口,就可以访问到本地的服务。
4、内容拓展——使frps在Linux服务器一直运行,不会随窗口关闭而停止
方法:使用Systemd
1、创建 Systemd 服务文件
在Linux服务器命令行执行
sudo nano /etc/systemd/system/frps.service #自定义服务名称
2、添加以下内容(注意分行,按照如下格式)
[Unit]
Description=Frp Server Service
After=network.target
Wants=network.target
[Service]
Type=simple
User=ubuntu
Group=ubuntu
WorkingDirectory=/data/frps #根据自己路径设置
ExecStart=/data/frps/frps -c /data/frps/frps.toml #根据自己路径设置
Restart=on-failure
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=frps
# 限制资源使用(可选)
LimitNOFILE=1048576
LimitNPROC=512
# 安全设置
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
(Ctrl + O # 保存文件
Enter # 确认文件名(保持为 frps.service)
Ctrl + X # 退出编辑器)
3、启用并启动服务
①重新加载 systemd 配置
sudo systemctl daemon-reload
②设置开机自启
sudo systemctl enable frps
③禁用开机自启
sudo systemctl disable frps
④立即启动服务
sudo systemctl start frps
⑤查看服务状态
sudo systemctl status frps
⑥查看实时日志
sudo journalctl -u frps -f
⑦ 查看是否启用
sudo systemctl is-enabled frps
⑧停止服务
sudo systemctl stop frps
⑨重启服务
sudo systemctl restart frps
⑩查看完整日志
sudo journalctl -u frps --no-pager -n 50
5、内容拓展——使frpc在本地windows服务器一直运行,不会随窗口关闭而停止
1、下载NSSM
地址:https://nssm.cc/download
下载最新版本,解压后选择 32 位或 64 位的 nssm.exe
解压缩下载的文件到一个方便访问的目录中,比如D:
ssm-2.24
2、使用nssm
进入到和你电脑相对应的win32和win64的文件夹下,在路径上输入cmd然后回车。

运行 nssm install得到如图:

Path:点击 Browse,导航到你的 frpc.exe 所在目录(例如 D:内网穿透rpc),并选择 frpc.exe。
Startup directory:通常会自动填充为与 Path 相同的目录。请确保它指向 D:内网穿透rpc,因为这是 frpc.toml 配置文件所在的位置。
Arguments:填写 -c frpc.toml。
Service name:可以填写为 FrpcService,自定义名称
3、启动与管理服务
①启动服务
net start FrpcService
②停止服务
net stop FrpcService
③ 设置服务为开机自动启动(默认已是自动)
sc config FrpcService start=auto
④查看服务状态
sc query FrpcService
⑤实时查看服务输出的日志(类似Linux的 tail -f)
nssm tail FrpcService
⑥修改服务配置
nssm edit FrpcService
⑦卸载服务
首先停止服务
net stop FrpcService
然后卸载
nssm remove FrpcService
使用图形界面管理:
按 Win + R,输入 services.msc 并回车,打开“服务”管理器。
在列表中找到你刚创建的 FrpcService。
可以在此处右键进行 启动、停止、重启,或双击查看属性、更改启动类型。










