1. 介绍
对于开发者而言,云服务已成为不可或缺的基础设施工具。然而,市面上配置稍高的云服务器往往价格不菲,成为许多开发团队或个人项目的成本瓶颈。下面推荐一种高效且经济的解决方案:通过轻量级反向代理工具 FRP(Fast Reverse Proxy) ,将公网云服务器与内网设备无缝连接。这一方案能够突破传统云服务的限制,还可以扩展云服务器下设备的数量,并且还可以将不必要的服务器不用暴露在公网上极大的增加了安全性。
项目下载:github.com/fatedier/fr...
2. 服务端配置
2.1 安装和配置项目
- 服务器上下载项目
bash
# 选择对应的系统版本将项目下载到代码中
wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
- 解压压缩包并更改文件夹名字
bash
# 解压项目
tar -zxvf frp_0.61.2_linux_amd64.tar.gz
# 重命名为frp
mv frp_0.61.2_linux_amd64 frp
# 项目中对应的文件:
# frpc 客户端可执行文件
# frpc.toml 客户端配置文件
# frps 服务端可执行文件
# frps.toml 服务端配置文件
服务端的配置文件修改和启动就对应
frps.toml
,frps
两个文件
3.编辑配置文件
toml
bindPort = 7000 # 客户端连接的端口
auth.method = "token" # 认证方式
auth.token = "your_password" # 客户端需使用相同的token
# 可选:Web管理界面(按需开启)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
4.测试启动服务
bash
# 添加执行权限
chmod +x frps
./frps -c frps.toml
2.2 设置为系统后台启动(Linux)
将刚刚下载的frp文件转移至/usr/local/frp/
下
- 创建systemd服务文件
bash
sudo vim /etc/systemd/system/frps.service
将配置文件内容粘贴进去
ini
[Unit]
Description=FRP Server (frps)
After=network.target
[Service]
Type=simple
User=root # 如果 frps 需要高权限(如绑定低端口),否则改为你的用户名
WorkingDirectory=/usr/local/frp
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
Restart=on-failure # 崩溃时自动重启
RestartSec=5s
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
- 设置权限并启动服务
bash
# 确保 frps 可执行
sudo chmod +x /usr/local/frp/frps
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动 frps
sudo systemctl start frps
# 检查状态(看到 "active (running)" 即成功)
sudo systemctl status frps
# 设置开机自启
sudo systemctl enable frps
-
验证服务
a.查看实时日志:bashjournalctl -u frps -f
b.测试端口
bashcurl http://127.0.0.1:7500 # 测试 Dashboard telnet 127.0.0.1 7000 # 测试客户端连接端口
2.客户端配置
2.1 安装和配置项目
- 项目的安装方式和服务端是一样的
客户端的启动和配置文件修改对应:frpc
,frpc.toml
2.修改配置文件 通过编辑sudo vim /usr/local/frp/frpc.toml
编辑frpc.toml
toml
serverAddr = "0.0.0.0" # 你的FRP服务器IP
serverPort = 7000
auth.method = "token"
auth.token = "xxxxxxxxxxxxxx" # 与服务器一致的token
[[proxies]]
name = "ssh-tunnel"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000 # 服务器端监听的端口
- 测试运行
bash
cd /usr/local/frp
sudo ./frpc -c frpc.toml
2.2 设置服务器后台自启
- 创建systemd 服务文件
shell
sudo vim /etc/systemd/system/frpc.service
- 服务器文件内容
ini
[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml
Restart=on-failure
RestartSec=5s
User=nobody
WorkingDirectory=/usr/local/frp
[Install]
WantedBy=multi-user.target
- 启用服务
shell
# 重新加载 systemd
sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable frpc
# 立即启动服务
sudo systemctl start frpc
# 检查状态
sudo systemctl status frpc
3. 结尾
通过以上配置可以实现通过云服务器实现从公网上访问到内网的服务器,后续可以根据自己的需求,部署Gitlab,jenkinbs,nginx等服务,并且可以只将需要向外暴露的服务端端口使用反向代理,不需要暴露的服务就在内网访问控制,可以确保数据和服务端安全