说明
我使用的设备情况如下:
- 硬件:DS920+
- 系统:DSM 7.1-42661 Update 1
- 套件版本:WebStation 3.1.0-0339
必要条件
- 开启DSM的SSH访问功能(通常在**控制面板-终端机和SNMP-启用SSH功能)
- 拥有管理员权限的账户(不一定是root,只要有管理员权限即可,这样可以使用sudo提权)
配置步骤
以搭建文件索引服务器为例,演示如何添加自定义配置。
使用WebStation新增静态网站
- 选择
网页服务并配置静态资源存放路径

- 选择
网络门户并配置域名地址

添加Nginx自定义配置
这一步需要在终端进行操作。使用SSH命令连接上DSM。
ssh user@nas.simaek.com
切换到sudo交互模式,避免每次输入命令都要添加sudo的麻烦。这里输入的密码是user用户的密码,user用户必须具有管理员群组权限(可在控制面板-用户与群组-用户账户中查看)。
sudo -i
Password:
切换到Nginx配置文件所在目录,目录下有4个子目录。以available结尾的目录中放置的文件并不一定会被启用。当在DSM系统中启用服务的时候,这些文件才会被链接到Nginx真正的配置目录并生效。并且这些配置文件都是以UUID的方式命名的。因此为了便于查看,我们直接操作链接文件即可。链接文件的名称更加具有可读性。
cd /usr/local/etc/nginx
ls -l
conf.d:这里的文件都是链接到conf.d-available中的配置文件。conf.d-available:一些群晖套件的配置,用户自定义配置,通用选项配置等。sites-available:WebStation中的虚拟主机、套件服务器门户等配置。sites-enabled:这里的文件都是链接到sites-available中的配置文件。 由上可知,我们需要操作的配置文件是位于/usr/local/etc/nginx/sites-enabled目录中的server.webstation-vhost.conf,这个配置文件包含了所有WebStation中添加的虚拟主机。
使用vim编辑器打开此文件,文本如下:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name dl.simaek.com ;
if ( $host !~ "(^dl.simaek.com$)" ) { return 404; }
include /usr/syno/etc/www/certificate/WebStation_vhost_d29555d8-e3ba-44ff-b82c-dfc1807fef13/cert.conf*;
include /usr/syno/etc/security-profile/tls-profile/config/vhost_d29555d8-e3ba-44ff-b82c-dfc1807fef13.conf*;
ssl_prefer_server_ciphers on;
location ^~ /.well-known/acme-challenge {
root /var/lib/letsencrypt;
default_type text/plain;
}
include conf.d/.webstation.error_page.default.conf*;
include conf.d/.webstation.error_page.default.resource.conf*;
root "/volume1/web/download";
index index.html index.htm index.cgi index.php index.php5 ;
include /usr/local/etc/nginx/conf.d/d29555d8-e3ba-44ff-b82c-dfc1807fef13/user.conf*;
}
配置的关键就在于这一Server段配置的最后一行。引入user.conf为前缀的文件。默认情况下,此文件不会自动创建,但是此文件的父目录是存在的,我们需要自己创建这个文件。
cd /usr/local/etc/nginx/conf.d/d29555d8-e3ba-44ff-b82c-dfc1807fef13
touch user.conf
使用vim编辑器打开新创建的user.conf文件,填入以下内容。
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
if ($request_uri ~ ^/(.*)\.html(\?|$)) {
return 302 /$1;
}
try_files $uri $uri.html $uri/ =404;
}
修改完成后,需要重新载入Nginx的配置生效,可以在WebStation中先停用虚拟主机再开启。另一种方式是使用Nginx的reload信号。
nginx -s reload
后续说明
自定义修改Nginx的配置,如果你不了解群晖的设计,也许会在server.webstation-vhost.conf上直接修改,这也是有效的。但是当你在WebStaion中进行配置变更的时候,所有的修改都会丢失。因为此配置文件是DSM动态生成的。而最后include包含的user.conf并不会因此受到影响。
Apache作为后端服务器也是类似的处理方式。 配置文件目录位于
/usr/local/etc/apache{version},
{version}表示Apache的版本号,
例如2.4版为/usr/local/etc/apache24。