当我们配置玩 DDNS 和 WireGuard 之后,我们已经可以安全的访问我们 NAS 上的文件以及各种服务了。

但是如果你觉得通过端口访问 Docker 中各个服务太繁琐,或者 Docker 服务太多,要记的端口太多。那么我们可以通过配置 Nginx 的方式,来给各个 Docker 服务绑定一个域名。

本文为《群晖NAS公网访问配置》系列文章的第三篇。全部文章请参考:

群晖NAS公网访问配置(一):配置DDNS
群晖NAS公网访问配置(二):配置WireGurad
群晖NAS公网访问配置(三):配置Nginx访问Docker服务
群晖NAS公网访问配置(四):配置云服务器

在云平台添加记录值

前面几篇文章中,我们在腾讯云上设置过多条主机记录,这里我们需要再添加一条作为我们 Docker 服务的入口域名。

同样是在腾讯云 我的域名 页面,点击已注册域名,进入“记录管理”页面。

单击添加记录,根据你服务的需求添加一条主机记录,比如我们为 calibre-web 添加域名,那么主机记录可以写 calibre
记录值和你 NAS 的内网 IP 相同。比如我们在上一篇文章中设置的 192.168.47.29

配置 NAS 的 Nginx

DSM 本身自带 Nginx,所以我们可以通过修改自带 Nginx 的方式来为 Docker 服务增加配置。

DSM 的 Nginx 每次启动时会根据模板文件重新创建,不过这里我们不修改文件本身,所以无碍。

通过 ps aux|grep nginx 命令我们可以看到 DSM 加载的是 /etc/nginx/nginx.conf.run,在该文件末尾有一行 include sites-enabled/*。这代表着我们可以将新增的配置放到 /etc/nginx/sites-enabled 文件夹下。

进入 sites-enabled 文件夹,然后通过 vim 新建一个配置文件:

cd /etc/nginx/sites-enabled

vim calibre.baidu.com.conf # 可使用你要配置的服务的域名作为文件名

在文件内填入下面的内容:

server {
    listen       80;
    server_name  calibre.baidu.com; # 服务的域名,根据实际情况替换

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_redirect off;
        proxy_pass http://172.17.0.1:8083; # 填写群晖容器详情中设置的网关/IP地址+配置的端口

        # 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
        client_max_body_size 2000m;
    }

}

保存后,使用下面的命令告诉 Nginx 使用指定的配置文件启动,然后重载 Nginx 的配置文件。

/usr/bin/nginx -c /etc/nginx/nginx.conf.run -t
/usr/bin/nginx -c /etc/nginx/nginx.conf.run -s reload

现在您应该已经可以使用 calibre.baidu.com 代替 sana.baidu.com:8083 来访问您的 calibre-web 服务了。