绿联云NAS公网访问部署指南
症状:外部网络访问http://nas.xxxxxxx.com/api/file/...时,自动跳转到iKuai登录界面,但通过IP http://120.2x.xx.xx/api/file/...可以正常访问。curl -I -H "Host: nas.xxxxxxx.com" http://127.0.0.1/api/file/技术部/智能体数据库/角色资产库/ComfyUI_00001_.p
# 绿联云NAS公网访问部署指南
## 项目概述
将局域网内的绿联云NAS通过Nginx反向代理暴露到公网,实现通过公网域名访问NAS中的文件。
架构说明:
```
公网用户
↓
公网域名 (nas.xxxxxxx.com)
↓
云服务器 (120.2x.xx.xx) - 宝塔Linux + Nginx
↓ (反向代理 + 认证)
iKuai路由器 (183.xx.xx.xxx:5005)
↓ (端口映射)
绿联云NAS (192.168.x.xx:5005) - WebDAV服务
```
核心优势:
- 不暴露NAS管理界面,只暴露文件访问接口
- 通过Nginx统一处理认证,用户无需输入NAS账号密码
- 支持自定义域名访问
- 可配置缓存、限流等高级功能
## 前置准备
硬件和网络环境:
- 绿联云NAS:已配置WebDAV服务(端口5005)
- iKuai路由器:支持端口映射/端口转发
- 云服务器:宝塔Linux面板(阿里云/腾讯云等)
- 域名:已购买并可以配置DNS解析
需要的信息:
- 绿联云NAS内网IP:192.168.x.xx
- 绿联云NAS WebDAV端口:5005
- 绿联云NAS WebDAV账号:xxx
- 绿联云NAS WebDAV密码:xxxxx
- iKuai路由器公网IP:183.xx.xx.xxx
- 云服务器公网IP:120.2x.xx.xx
- 域名:nas.xxxxxxx.com
## 部署步骤
### 第一步:配置iKuai路由器端口映射
1. 登录iKuai路由器管理界面
2. 进入端口映射或NAT转发配置
3. 添加端口映射规则:
- 外网端口:5005
- 内网IP:192.168.x.xx
- 内网端口:5005
- 协议:TCP
4. 保存配置
验证:从外网测试访问 http://183.xx.xx.xxx:5005/,应该能访问到WebDAV服务(需要输入账号密码)。
### 第二步:配置DNS解析
1. 登录域名管理后台(域名注册商或DNS服务商)
2. 添加A记录:
- 主机记录:nas
- 记录类型:A
- 记录值:120.2x.xx.xx(云服务器IP)
- TTL:10分钟(推荐,便于快速生效)
3. 保存配置
重要提示:
- 确保记录值指向云服务器IP(120.2x.xx.xx),不要指向iKuai路由器IP(183.xx.xx.xxx)
- 等待DNS生效(通常10-30分钟,全球生效可能需要24-48小时)
验证:
```bash
# 清除本地DNS缓存
ipconfig /flushdns # Windows
sudo systemd-resolve --flush-caches # Linux
# 检查DNS解析
nslookup nas.xxxxxxx.com
# 应该显示:120.2x.xx.xx
```
### 第三步:配置宝塔Linux服务器
#### 3.1 登录宝塔面板
访问 http://你的服务器IP:8888,使用宝塔账号登录。
#### 3.2 创建网站
1. 点击网站 → 添加站点
2. 配置信息:
- 域名:nas.xxxxxxx
- 备注:绿联云文件代理
- 根目录:/www/wwwroot/nas.xxxxxxx.com
- FTP:不创建
- 数据库:不创建
- PHP版本:纯静态(或根据需要选择)
3. 点击提交
#### 3.3 配置SSL证书(可选但推荐)
1. 在网站列表中,点击nas.xxxxxxx.com的设置
2. 进入SSL标签
3. 选择Let's Encrypt免费证书
4. 点击申请,等待证书申请完成
5. 开启强制HTTPS(可选)
### 第四步:配置Nginx反向代理
#### 4.1 生成Base64认证字符串
WebDAV使用HTTP Basic认证,需要将用户名:密码进行Base64编码。
```bash
# 在服务器上执行
echo -n "xxxx:xxxxx025" | base64
# 输出:Y2hhb3dlaTpDxxxxxxxxxxx==
```
注意:确保用户名和密码正确,编码后的字符串将用于Nginx配置。
#### 4.2 配置反向代理规则
1. 在宝塔面板中,点击nas.xxxxxxx.com的设置
2. 进入反向代理标签
3. 点击添加反向代理
4. 配置信息:
- 代理名称:webdav-proxy
- 目标URL:http://183.xx.xx.xxx:5005
- 发送域名:$host
- 内容替换:不配置
5. 点击提交
#### 4.3 编辑反向代理配置文件
1. 在反向代理列表中,点击配置文件按钮
2. 将配置内容替换为以下内容:
```nginx
#PROXY-START/
#优先匹配/api/file/路径(更具体的路径要放在前面)
location ^~ /api/file/ {
rewrite ^/api/file/(.*)$ /$1 break;
proxy_pass http://183.xx.xx.xxx:5005;
proxy_set_header Authorization "Basic Y2hhb3dlaTpDxxxxxxxxxxx==";
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_request_buffering off;
client_max_body_size 100M;
proxy_read_timeout 300s;
proxy_http_version 1.1;
add_header Cache-Control "public, max-age=3600";
}
#PROXY-END/
```
关键配置说明:
- location ^~ /api/file/:使用^~前缀确保优先匹配,避免被其他location规则覆盖
- rewrite ^/api/file/(.*)$ /$1 break;:将/api/file/路径重写为/路径,去掉/api/file/前缀
- proxy_pass http://183.xx.xx.xxx:5005;:代理到iKuai路由器的公网IP和端口
- proxy_set_header Authorization "Basic ...":自动添加WebDAV认证信息
- client_max_body_size 100M;:允许上传最大100MB的文件
- proxy_read_timeout 300s;:设置超时时间为300秒,适合大文件传输
3. 点击保存
#### 4.4 修改主配置文件(确保IP访问也能正常工作)
1. 在网站设置中,点击配置文件标签
2. 找到server块,确保配置如下:
```nginx
server
{
listen 80 default_server;
listen 443 ssl default_server;
listen 443 quic default_server;
http2 on;
server_name nas.xxxxxxx.com 120.2x.xx.xx;
#SSL-END
#引用反向代理规则,注释后配置的反向代理将无效(放在所有location之前,确保优先匹配)
include /www/server/panel/vhost/nginx/proxy/nas.xxxxxxx.com/*.conf;
# ... 其他配置 ...
}
```
关键点:
- listen 80 default_server;:设置为默认服务器,确保直接IP访问时也能匹配
- server_name nas.xxxxxxx.com 120.2x.xx.xx;:同时匹配域名和IP
- include /www/server/panel/vhost/nginx/proxy/nas.xxxxxxx.com/*.conf;:必须在所有location块之前,确保/api/file/规则优先匹配
3. 点击保存
### 第五步:测试和验证
#### 5.1 测试Nginx配置
在服务器上执行:
```bash
# 检查Nginx配置语法
nginx -t
# 如果测试通过,重载配置
nginx -s reload
```
#### 5.2 测试WebDAV连接
在服务器上执行:
```bash
# 测试能否访问WebDAV服务
curl -I -u "xxxx:xxxxx025" http://183.xx.xx.xxx:5005/
# 应该返回:HTTP/1.1 200 OK
```
#### 5.3 测试代理功能
在服务器上执行:
```bash
# 测试本地代理
curl -I -H "Host: nas.xxxxxxx.com" http://127.0.0.1/api/file/技术部/智能体数据库/角色资产库/ComfyUI_00001_.png
# 应该返回:HTTP/1.1 200 OK
```
#### 5.4 测试公网访问
1. 使用IP访问:
http://120.2x.xx.xx/api/file/00001_.png
2. 使用域名访问(等待DNS生效后):
http://nas.xxxxxxx.com/api/file/技术部/智能体数据库/角色资产库/ComfyUI_00001_.png
3. 在浏览器中测试:
- 打开浏览器(建议使用无痕模式,避免缓存干扰)
- 访问上述URL
- 应该能正常显示图片
## 常见问题排查
### 问题1:DNS解析错误
症状:访问域名时跳转到iKuai登录界面
原因:DNS A记录指向了错误的IP(iKuai路由器IP)
解决:
1. 检查DNS管理界面,确认A记录值为云服务器IP(120.2x.xx.xx)
2. 删除指向iKuai路由器IP的旧记录
3. 等待DNS生效(10-30分钟)
验证:
```bash
nslookup nas.xxxxxxx
# 应该显示:120.24.22.23
```
### 问题2:502 Bad Gateway
症状:访问时返回502错误,日志显示Connection refused
原因:从云服务器无法连接到iKuai路由器的5005端口
可能的原因:
1. NAT回环问题:路由器不允许从外部访问自己的公网IP
2. 防火墙规则:iKuai路由器防火墙阻止了来自云服务器的连接
3. 端口映射未生效:路由器端口映射配置错误
解决:
1. 检查iKuai路由器是否支持NAT回环(Hairpinning),如支持则启用
2. 检查防火墙规则,允许来自云服务器IP的连接
3. 验证端口映射配置是否正确
临时方案:如果云服务器和路由器在同一内网(或通过VPN),可以尝试使用内网IP:
```nginx
proxy_pass http://192.168.x.xx:5005;
```
### 问题3:401 Unauthorized
症状:访问时返回401错误,需要输入账号密码
原因:Nginx配置中的认证信息错误
解决:
1. 检查用户名和密码是否正确
2. 重新生成Base64编码:
```bash
echo -n "用户名:密码" | base64
```
3. 更新Nginx配置中的proxy_set_header Authorization值
4. 重载Nginx:nginx -s reload
### 问题4:浏览器显示iKuai登录界面
症状:访问域名时显示iKuai路由器登录界面
原因:
1. DNS未生效,仍解析到iKuai路由器IP
2. 浏览器缓存了旧的DNS解析结果
解决:
1. 清除浏览器缓存:Ctrl + Shift + Delete
2. 清除本地DNS缓存:ipconfig /flushdns(Windows)
3. 使用无痕模式测试
4. 等待DNS生效
### 问题5:location规则不匹配
症状:访问/api/file/...时被其他location规则处理
原因:include语句位置不正确,或location优先级问题
解决:
1. 确保include /www/server/panel/vhost/nginx/proxy/nas.xxxxxxx.com/*.conf;在所有location块之前
2. 确保使用location ^~ /api/file/(带^~前缀)
3. 检查是否有其他配置文件也定义了/api/file/规则(会导致重复)
### 问题6:多个server块冲突
症状:直接IP访问时匹配到错误的server块
原因:多个server块都监听80端口,且都设置了default_server
解决:
1. 确保只有nas.xxxxxxx.com的配置设置了default_server
2. 或者在每个需要的server块中都添加/api/file/的代理规则
### 问题7:DNS记录自动被改回路由器IP(动态域名冲突)
症状:在DNS服务商处设置了A记录为云服务器IP(120.2x.xx.xx),但过一段时间后,DNS解析又变回了路由器IP(183.xx.xx.xxx)
原因:iKuai路由器的动态域名(DDNS)功能在自动覆盖DNS记录
检查方法:
1. 登录iKuai管理界面
2. 进入"高级应用" → "动态域名"
3. 查看是否有nas.xxxxxxx.com的配置
4. 如果存在且状态为"已启用",这就是问题的根源
解决方案:
方案1:停用或删除动态域名配置(推荐)
1. 登录iKuai管理界面
2. 进入"高级应用" → "动态域名"
3. 找到nas.xxxxxxx.com的条目
4. 点击"停用"或"删除"
5. 保存配置
重要:必须停用或删除,否则动态域名会持续覆盖你的DNS设置。
方案2:修改动态域名为其他域名(如果路由器需要动态域名)
如果路由器需要动态域名功能(用于远程访问路由器),可以:
1. 点击"编辑"
2. 将域名改为其他名称,例如:
- router.xxxxxxx.com
- ikuai.xxxxxxx.com
- gateway.xxxxxxx.com
3. 保存配置
这样:
- router.xxxxxxx.com → 解析到路由器IP(用于访问路由器)
- nas.xxxxxxx.com → 解析到云服务器IP(用于访问文件)
方案3:在DNS服务商处重新设置A记录
停用动态域名后:
1. 登录DNS管理界面(如阿里云)
2. 检查nas.xxxxxxx.com的A记录
3. 确保记录值为120.2x.xx.xx
4. 如果被改成了183.xx.xx.xxx,重新修改为120.2x.xx.xx
5. 保存配置
验证:
停用动态域名并重新设置DNS记录后,等待10-30分钟,然后测试:
```bash
ipconfig /flushdns
nslookup nas.xxxxxxx.com
```
应该显示120.2x.xx.xx。
### 问题8:路由器自动将域名跳转到路由器IP
症状:外部网络访问http://nas.xxxxxxx.com/api/file/...时,自动跳转到iKuai登录界面,但通过IP http://120.2x.xx.xx/api/file/...可以正常访问
原因:iKuai路由器有自动跳转或拦截功能,将nas.xxxxxxx.com的请求重定向到路由器IP
可能的功能位置:
位置1:HTTP服务(最可能)
1. 登录iKuai管理界面
2. 进入"高级应用" → "HTTP服务"
3. 检查是否有域名重定向规则、HTTP重定向配置、域名拦截规则
4. 如果有nas.xxxxxxx.com相关的规则,删除或停用
位置2:域名拦截/重定向
1. 登录iKuai管理界面
2. 查找以下位置:
- "安全设置" → "域名拦截"
- "行为管控" → "域名管理"
- "流控分流" → "域名分流"
3. 检查是否有nas.xxxxxxx.com的规则
4. 如果有,删除或修改
位置3:NAT规则
1. 登录iKuai管理界面
2. 进入"网络设置" → "NAT规则"
3. 检查是否有针对nas.xxxxxxx.com的NAT规则
4. 如果有,删除或修改
位置4:端口映射
1. 登录iKuai管理界面
2. 进入"网络设置" → "端口映射"
3. 检查是否有针对域名nas.xxxxxxx.com的端口映射
4. 如果有,删除或修改
解决方案:
方案1:检查并删除所有相关规则(推荐)
1. 按照上述位置逐一检查
2. 找到所有与nas.xxxxxxx.com相关的配置
3. 删除或停用这些配置
4. 保存配置
方案2:确认DNS服务商的记录正确
即使路由器有跳转功能,如果DNS解析正确,外部网络应该能直接访问云服务器。检查:
1. 登录阿里云DNS管理界面
2. 确认nas.xxxxxxx.com的A记录值为120.2x.xx.xx
3. 如果还是183.xx.xx.xx,修改为120.2x.xx.xx
4. 等待DNS生效(10-30分钟)
方案3:使用HTTPS(如果配置了SSL)
如果云服务器配置了HTTPS,尝试使用HTTPS访问:
https://nas.xxxxxxx.com/api/file/...
某些路由器的HTTP重定向可能不适用于HTTPS。
验证:
在外部网络(非局域网)测试:
```bash
# 使用公共DNS测试解析
nslookup nas.xxxxxxx.com 8.8.8.8
# 应该显示:120.2x.xx.xx
# 在浏览器中访问
http://nas.xxxxxxx.com/api/file/技术部/智能体数据库/角色资产库/ComfyUI_00001_.png
# 应该能正常显示图片,而不是跳转到iKuai界面
```
### 问题9:局域网内部分电脑能访问,部分显示iKuai登录界面
症状:在同一局域网内,你的电脑能正常访问nas.xxxxxxx.com,但其他电脑访问时显示iKuai登录界面
原因:DNS解析不一致
- 你的电脑可能使用了公共DNS或hosts文件,正确解析到云服务器IP
- 其他电脑使用iKuai路由器作为DNS服务器(192.168.x.xx),无法正确解析域名,或解析到了iKuai路由器IP
诊断方法:
在其他电脑上执行:
```bash
# 检查当前使用的DNS服务器
ipconfig /all | findstr "DNS"
# 检查DNS解析结果
nslookup nas.xxxxxxx.com
# 使用公共DNS测试
nslookup nas.xxxxxxx.com 8.8.8.8
```
解决方案:
方案1:在iKuai路由器上配置DNS重定向/域名解析规则(最推荐)
优点:
- 只针对特定域名,不影响其他域名解析
- 所有设备自动生效,无需单独配置
- 不影响内网其他服务
- 新设备接入后自动生效
实施步骤:
1. 登录iKuai管理界面
2. 查找以下功能(不同版本可能位置不同):
- "DNS设置" → "域名解析"或"DNS重定向"
- "高级功能" → "自定义域名解析"
- "网络设置" → "hosts文件"
3. 添加域名解析规则:
- 域名:nas.xxxxxxx.com
- 解析到:120.2x.xx.xx
4. 保存配置
方案2:使用hosts文件(简单有效,无需修改路由器)
优点:
- 无需修改路由器配置
- 立即生效
- 不影响其他设备
- 可随时修改或删除
缺点:
- 需要每台电脑单独配置
实施步骤:
1. 以管理员身份打开记事本
2. 打开文件:C:\Windows\System32\drivers\etc\hosts
3. 添加一行:
120.2x.xx.xx nas.xxxxxxx.com
4. 保存文件
5. 清除DNS缓存:ipconfig /flushdns
批量配置脚本(适合多台电脑):
创建一个批处理文件setup_hosts.bat:
```batch
@echo off
echo 正在配置hosts文件...
echo 120.24.22.23 nas.xxxxxxx.com >> C:\Windows\System32\drivers\etc\hosts
echo 配置完成!
ipconfig /flushdns
pause
```
以管理员身份运行此脚本即可。
方案3:修改其他电脑的DNS设置
1. 打开"网络和共享中心" → "更改适配器设置"
2. 右键当前网络连接 → 属性
3. 选择"Internet协议版本4 (TCP/IPv4)" → 属性
4. 选择"使用下面的DNS服务器地址"
5. 设置:
- 首选DNS:223.5.5.5(阿里云)或8.8.8.8(Google)
- 备用DNS:223.6.6.6(阿里云)或8.8.4.4(Google)
6. 确定保存
7. 清除DNS缓存:ipconfig /flushdns
方案4:在iKuai路由器上配置全局DNS转发(不推荐,除非方案1不可用)
优点:
- 一次性解决所有设备的问题
- 新设备接入后自动生效
- 统一管理,便于维护
可能的影响:
- 如果内网有本地域名(如server.local),可能无法解析
- 企业网络可能有DNS策略限制
- 如果公共DNS不稳定,可能影响网络访问
实施步骤:
1. 登录iKuai管理界面
2. 进入"网络设置" → "DHCP设置"或"DNS设置"
3. 找到"DNS服务器"配置
4. 设置:
- 主DNS:223.5.5.5(阿里云,国内访问快)
- 备DNS:8.8.8.8(Google,备用)
5. 保存配置
6. 重启路由器(如果需要)
推荐顺序:
1. 首选:方案1(iKuai DNS重定向/域名解析规则)- 只针对特定域名,最安全
2. 次选:方案2(hosts文件)- 简单有效,无需修改路由器
3. 备选:方案3(修改电脑DNS)- 如果路由器不支持方案1
4. 最后:方案4(路由器全局DNS)- 仅在以上方案都不可用时使用
## 日志查看
### Nginx访问日志
```bash
# 实时查看访问日志
tail -f /www/wwwlogs/nas.xxxxxxx.com.log
# 查看最近的访问记录
tail -100 /www/wwwlogs/nas.xxxxxxx.com.log
```
### Nginx错误日志
```bash
# 实时查看错误日志
tail -f /www/wwwlogs/nas.xxxxxxx.com.error.log
# 查看最近的错误记录
tail -100 /www/wwwlogs/nas.xxxxxxx.com.error.log
```
## 安全建议
### 1. 使用HTTPS
- 在宝塔面板中申请Let's Encrypt免费SSL证书
- 启用强制HTTPS重定向
- 保护传输过程中的数据安全
### 2. 定期更换密码
- 定期更换WebDAV账号密码
- 更新Nginx配置中的Base64认证字符串
### 3. 访问控制
- 考虑添加IP白名单(如果需要)
- 配置访问频率限制,防止滥用
### 4. 监控和告警
- 定期检查访问日志,发现异常访问
- 配置服务器监控,及时发现故障
## 部署检查清单
部署完成后,请确认以下项目:
- iKuai路由器端口映射配置正确
- DNS A记录指向云服务器IP(120.2x.xx.xx)
- DNS解析已生效(nslookup验证)
- 宝塔面板网站创建成功
- Nginx反向代理配置正确
- Base64认证字符串正确
- Nginx配置语法检查通过(nginx -t)
- 从服务器本地测试代理成功
- 从公网IP访问成功
- 从域名访问成功
- 浏览器能正常显示图片
## 完成
恭喜!你已经成功将绿联云NAS通过Nginx反向代理暴露到公网。
现在可以通过以下方式访问文件:
- http://120.2x.xx.xx/api/file/路径/文件名
- http://nas.xxxxxxx.com/api/file/路径/文件名
如有问题,请参考常见问题排查部分,或查看Nginx日志进行诊断。
更多推荐


所有评论(0)