FRP + Nginx 实现绿联 NAS 的 Halo 应用外网访问
一、极简配置与精准定位
1. FRP 服务端配置(云服务器)
# /etc/frp/frps.toml
bindPort = 7000
auth.token = "@Lcc125331"核心作用:在云服务器上创建 FRP 服务端
关键点:仅保留必要参数,避免多余配置
2. FRP 客户端配置(绿联 NAS)
# frpc.toml
serverAddr = "60.205.143.23" # 您的云服务器公网IP
serverPort = 7000
auth.token = "@Lcc125331"
[[proxies]]
name = "halo-app"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8090 # Halo 默认端口
remotePort = 6001 # 云服务器映射端口核心作用:将本地 Halo 服务映射到云服务器
关键点:
使用 TCP 基础协议,避免 HTTP 模式的复杂性
明确指定 Halo 的实际端口(8090)
使用环回地址 127.0.0.1 确保本地访问安全
3. Nginx 反向代理配置(云服务器)
server {
listen 80;
server_name perilxx.cn www.perilxx.cn;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name perilxx.cn www.perilxx.cn;
ssl_certificate /etc/nginx/ssl/perilxx.cn/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/perilxx.cn/privkey.pem;
location / {
proxy_pass http://127.0.0.1:6001;
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;
}
error_page 502 /502.html;
location = /502.html {
return 200 '服务启动中,请稍后刷新';
}
}核心作用:将 HTTPS 请求转发到本地的 6001 端口
关键点:
最简化的代理配置,只保留 5 个必要头部
去除了所有非必要的优化和安全配置
保留基础错误处理
二、成功部署流程
步骤 1:配置 FRP 服务端(云服务器)
# 安装 FRPS
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
tar -zxvf frp_0.51.3_linux_amd64.tar.gz
sudo mv frp_0.51.3_linux_amd64 /usr/local/frp
# 创建配置文件
echo 'bindPort = 7000
auth.token = "@Lcc125331"' | sudo tee /usr/local/frp/frps.toml
# 启动服务
sudo /usr/local/frp/frps -c /usr/local/frp/frps.toml &步骤 2:配置 FRP 客户端(绿联 NAS)
# 创建 frpc.toml 配置文件
cat > frpc.toml <<EOF
serverAddr = "60.205.143.23"
serverPort = 7000
auth.token = "@Lcc125331"
[[proxies]]
name = "halo-app"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8090
remotePort = 6001
EOF
# 启动 FRPC 容器
docker run -d \
--name frpc \
-v $(pwd)/frpc.toml:/etc/frp/frpc.toml \
snowdreamtech/frpc步骤 3:配置 Nginx(云服务器)
# 创建极简配置文件
sudo nano /etc/nginx/conf.d/halo.conf
# 粘贴配置内容
# 测试并应用配置
sudo nginx -t && sudo systemctl reload nginx三、成功验证流程
1. 验证 FRP 通道
curl http://127.0.0.1:6001✅ 成功响应:返回 Halo 的 HTML 内容
2. 验证 Nginx 代理
# 在云服务器上执行
curl -k https://perilxx.cn✅ 成功响应:返回与上一步相同的内容
3. 最终访问测试
在浏览器访问:https://perilxx.cn
✅ 成功显示:Halo 博客系统的登录界面
四、成功关键因素分析
1. 配置极简化
移除了所有非必要指令:
去除了复杂的 SSL 优化参数
移除了多余的缓存控制
删除了不必要的安全头部
2. 协议选择正确
使用 TCP 模式代替 HTTP 模式:
避免虚拟主机配置问题
基础协议更稳定可靠
减少配置复杂度
3. 精准端口映射

4. 问题隔离策略
分阶段验证:
先验证 FRP 通道:
curl http://127.0.0.1:6001再验证 Nginx 代理:
curl -k https://perilxx.cn最后全链路测试
五、经验总结
KISS 原则(Keep It Simple, Stupid)
复杂配置是万恶之源
每增加一个配置项,故障概率指数级增长
分层验证策略
从底层开始逐层验证
先确保通道畅通,再处理上层协议
规避非必要特性
初期避免使用 HTTP 模式等高级特性
基础 TCP 映射 + Nginx 代理是最可靠组合
精准定位问题
502 错误 → 检查后端服务
连接失败 → 检查 FRP 通道
重定向循环 → 检查代理配置
六、最终成果
现在您可以通过:
本地访问:
http://绿联NAS_IP:8090FRP 直连:
http://云服务器_IP:6001域名访问:
https://perilxx.cn
三种方式均能访问 Halo 应用,且完全使用您的自定义域名和 HTTPS 加密。
这个方案的成功在于它的简洁性和针对性,完美解决了您的核心需求:通过自定义域名安全访问绿联 NAS 上的 Halo 应用。