通过绿联 UGREENlink 访问内网 Web 站点
前置条件
- 懂基本 Linux 命令
- 懂基本 Nginx 配置
- 有绿联 NAS 的 SSH root 权限
- Web应用支持设置子路径(sub-path)
原理说明
绿联 NAS 使用 Nginx 作为反向代理来管理 Web 应用。通过在 Nginx 配置中插入自定义规则,可以让特定子路径指向内网的 Web 应用。
关键目录:
/etc/nginx/conf.d- 子路径配置目录/etc/nginx/service.d- 服务配置目录
实现效果
假设 UGREENlink ID 为:mylinkid
通过访问 https://ug.link/mylinkid 获取到当前的服务器为:https://mylinkid.cn33.ug.link/desktop/
配置完成后可实现:
通过 https://mylinkid.cn33.ug.link/SUBPATH/ 直接访问内网的 Web 应用
例如:
https://mylinkid.cn33.ug.link/pma/→ phpMyAdminhttps://mylinkid.cn33.ug.link/monitor/→ 监控系统https://mylinkid.cn33.ug.link/dav/→ Webdavhttps://mylinkid.cn33.ug.link/app/→ 其他应用

配置步骤
1. 准备自定义配置目录
假设自定义 Nginx 配置路径为:/volume1/data/nginx
创建目录结构:
mkdir -p /volume1/data/nginx/conf.d
2. 创建主配置文件
在 /volume1/data/nginx 下创建 custom_conf.d.conf:
# 引入自定义子路径配置
include /volume1/data/nginx/conf.d/*.conf;
3. 创建初始化脚本
在 /volume1/data/nginx 下创建 init_custom_conf.d.sh:
#!/bin/bash
# 先删除旧的软链接(如果存在)
rm -rf /etc/nginx/conf.d/custom_conf.d.conf
# 创建新的软链接,将自定义配置引入 Nginx
ln -s /volume1/data/nginx/custom_conf.d.conf /etc/nginx/conf.d/custom_conf.d.conf
echo "自定义配置已初始化"
赋予执行权限:
chmod +x /volume1/data/nginx/init_custom_conf.d.sh
4. 执行初始化
cd /volume1/data/nginx
./init_custom_conf.d.sh
执行后,Nginx 会自动加载 /volume1/data/nginx/conf.d/ 目录下的所有 .conf 文件。
示例一:phpMyAdmin
步骤 1:部署 phpMyAdmin 容器
创建 docker-compose.yaml:
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
network_mode: bridge
environment:
PUID: 1000
PGID: 100
TZ: Asia/Shanghai
PMA_ARBITRARY: 1 # 允许连接任意数据库
PMA_ABSOLUTE_URI: "https://mylinkid.cn33.ug.link/pma" # 指定子路径
ports:
- 3380:80 # 映射到宿主机 3380 端口
restart: unless-stopped
关键配置说明:
PMA_ABSOLUTE_URI:告诉 phpMyAdmin 它运行在子路径下,确保资源路径正确ports:映射到宿主机端口,供 Nginx 反向代理,端口设置为3380
启动容器:
docker-compose up -d
步骤 2:添加 Nginx 配置
在 /volume1/data/nginx/conf.d/ 下创建 phpMyAdmin.conf:
location ~ ^/pma {
include proxy_params;
# 代理配置
proxy_intercept_errors on;
proxy_pass http://127.0.0.1:3380;
proxy_http_version 1.1;
proxy_set_header Connection "";
# 重写路径,去掉 /pma 前缀
rewrite ^/pma(/.*)$ $1 break;
}
步骤 3:验证并重载 Nginx
检查配置是否正确:
nginx -t
如果输出 syntax is ok 和 test is successful,则重载配置:
nginx -s reload
步骤 4:访问测试
在浏览器中访问:https://mylinkid.cn33.ug.link/pma/
应该能看到 phpMyAdmin 的登录界面。
示例二:代理系统的Webdav 服务
关键配置说明:
- 要在系统中启用 Webdav,默认
HTTP端口是5005 - 绿联的 Webdav 服务是没有子路径的,添加代理时要增加
/dav子路径,这个子路径 nginx 处理时要去除,返回给用户的时候又要加上。
Nginx 配置 /volume1/data/nginx/conf.d/dav.conf:
location = /dav {
return 301 $scheme://$http_host/dav/;
}
location /dav/ {
include proxy_params; # 绿联默认请求头
proxy_pass http://localhost:5005/; # 注意:末尾的 / 不可省略!
proxy_pass_request_headers on;
proxy_request_buffering off;
proxy_buffering off;
client_max_body_size 0;
proxy_http_version 1.1;
# 替换返回结果,在路径前面加上 /dav
proxy_set_header Accept-Encoding "";
sub_filter '<D:href>' '<D:href>/dav'; # 增加路径前缀返回
sub_filter_once off;
sub_filter_types text/xml application/xml; # 仅处理 WebDAV 响应
proxy_redirect default;
}访问地址:https://mylinkid.cn33.ug.link/dav/
在 nPlayer 等应用中参考这样填写
主机:mylinkid.cn33.ug.link
端口:443
路径:/dav/
HTTPS:勾选
用户名、密码:写你自己的

示例三:Jellyfin 媒体服务器
docker-compose.yaml:
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
network_mode: bridge
environment:
PUID: 1000
PGID: 100
TZ: Asia/Shanghai
volumes:
- ./config:/config
- ./cache:/cache
- /volume1/Media:/media # 媒体库路径
ports:
- 8096:8096 # HTTP 端口
restart: unless-stopped
关键配置说明:
- Jellyfin 支持通过管理界面设置基础 URL(Base URL)
- 登录 Jellyfin 后,进入 控制台 → 网络 → 基础 URL,填写
/jellyfin
或者编辑配置文件 /volume1/data/jellyfin/config/config/network.xml,添加:
<BaseUrl>/jellyfin</BaseUrl>
Nginx 配置 /volume1/data/nginx/conf.d/jellyfin.conf:
location /jellyfin {
proxy_pass http://127.0.0.1:8096;
include proxy_params;
# WebSocket 支持(用于实时更新)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 缓冲区设置(重要:视频播放需要)
proxy_buffering off;
# 超时设置
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
访问地址:https://mylinkid.cn33.ug.link/jellyfin/
💡 提示:Jellyfin 首次访问时需要完成初始化向导,设置管理员账号和媒体库路径。记得在网络设置中将基础 URL 设置为 /jellyfin。硬件转码需要确保容器有 GPU 访问权限。注意事项
1. 应用必须支持子路径
并非所有 Web 应用都支持在子路径下运行。应用需要:
- 能够配置 base path / sub path
- 正确处理相对路径和绝对路径
- 支持通过环境变量或配置文件设置基础路径
2. WebSocket 支持
如果应用使用 WebSocket(如 Home Assistant、Node-RED),需要在 Nginx 配置中添加:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
3. 路径重写规则
根据应用的不同,可能需要调整 rewrite 规则:
rewrite ^/pma(/.*)$ $1 break;- 去掉前缀rewrite ^/app$ /app/ permanent;- 添加尾部斜杠
4. 安全建议
- 限制访问源:如果只在特定网络使用,可以配置 IP 白名单
- 启用认证:考虑在 Nginx 层面添加 HTTP Basic Auth
- 定期更新:及时更新容器镜像,修复安全漏洞
故障排查
问题 1:403 Forbidden
可能原因:
- Nginx 配置语法错误
- 应用未正确配置子路径
- 权限问题
解决方法:
# 查看 Nginx 错误日志
tail -f /var/log/nginx/error.log
# 检查容器是否正常运行
docker ps | grep phpmyadmin
# 测试容器端口是否可访问
curl http://127.0.0.1:3380
问题 2:样式丢失或资源 404
**原因:**应用未正确配置子路径,导致静态资源路径错误
解决方法:
- 检查应用的子路径配置(如
PMA_ABSOLUTE_URI) - 确认
proxy_set_header配置正确 - 查看浏览器控制台,确认资源请求路径
问题 3:配置不生效
检查步骤:
# 1. 确认软链接存在
ls -la /etc/nginx/conf.d/custom_conf.d.conf
# 2. 确认配置文件存在
ls -la /volume1/data/nginx/conf.d/
# 3. 测试 Nginx 配置
nginx -t
# 4. 查看 Nginx 进程
ps aux | grep nginx
# 5. 重启 Nginx(如果重载无效)
systemctl restart nginx
问题 4:系统更新后配置丢失
绿联 NAS 系统更新可能会清除软链接。
解决方案:重新执行初始化脚本
/volume1/data/nginx/init_custom_conf.d.sh
扩展应用
批量配置多个应用
在 /volume1/data/nginx/conf.d/ 下创建多个配置文件:
/volume1/data/nginx/conf.d/
├── phpMyAdmin.conf
├── dav.conf
├── jellyfin.conf
每次添加新配置后,执行 nginx -s reload 即可。