在synology nas的webstation架設quartz 4.0這個靜態網站,需要更改nginx config,讓public/my-post可以找到public/my-post.html,如官方所述。也就是需要加上 try_files $uri $uri.html $uri/ =404;在正確的nginx config 裡的 server location。

但 Synology 的 /etc/nginx/nginx.conf 是自動產生的,是從 /etc/nginx/nginx.conf.default copy來的,也就是說重啟之後,nginx.conf裡的變動會消失。/etc/nginx/sites-enabled/server.webstation.conf的變動也會消失,所以最後要把step 2和step 3的script在開機時照順序執行。

解決方法

stop 0: 需要root 權限

sudo -i

step 1: 尋找WebStation有關的nginx config

找到nginx用的所有config, 找出和WebStation有關的config

nginx -T |grep "configuration file" | grep "webstation"

step 2: 加入tryfile

加上try_files/etc/nginx/sites-enabled/server.webstation.conf的結尾,one-liner如下:

sed -i '$i\ location / {\n try_files $uri $uri.html $uri/ =404;\n}' /etc/nginx/sites-enabled/server.webstation.conf

step3: 重啟nginx

DSM7:

systemctl reload nginx

step4: 設定開機執行

控制台>任務排程,新增兩個觸發任務,使用者指令,以root權限照順序執行。