tl;dr 编辑 /usr/syno/etc/synoservice.d/httpd-user.cfg 使其看起来像:
{
"init_job_map":{"upstart":["httpd-user"]},
"user_controllable":"no",
"mtu_sensitive":"yes",
"auto_start":"no"
}
然后在/etc/init/httpd-user.conf 中将stop on runlevel 编辑为[0123456]:
Syno-Server> cat /etc/init/httpd-user.conf
description "start httpd-user daemon"
author "Development Infrastructure Team"
console log
reload signal SIGUSR1
start on syno.share.ready and syno.network.ready
stop on runlevel [0123456]
...
...然后重新启动。
背景信息
Backslash36 给出的答案并不是最简单的解决方案,也可能更难维护。在这里,我给出了一个不涉及启动webstation 的解决方案,这是大多数其他解决方案所需要的。请注意,有关更新的文档,请参阅 here,它提供了有关 Synology 系统的大量信息。
需要注意的是,新的 DSM (> 5.x) 现在使用 upstart,所以之前的很多文档都不正确。 Synology 机器上默认运行两个 httpd 作业:
-
httpd-sys:提供管理页面,默认位于5000/5001。
-
httpd-user :这有点令人困惑,即使webstation 程序未启用,它总是运行。
如果webstation:
- 已启用:则此程序为用户网页提供服务。
-
未启用:然后此程序将
/usr/syno/synoman/phpsrc/web 设置为其DocumentRoot (/usr/syno/synoman/phpsrc/web/index.cgi -> /usr/syno/synoman/webman/index.cgi),这意味着对http://address.of.my.dsm 的调用将调用index.cgi 文件。这个cgi 文件是驱动重定向到5000(或您设置的admin_port 的任何内容)的原因。
从命令行,您可以检查[secure_]admin_port 的设置:
Syno-Server> get_key_value /etc/synoinfo.conf admin_port
5184
Syno-Server> get_key_value /etc/synoinfo.conf secure_admin_port
5185
我的设置有所不同。
好的,现在开始解决。最好的解决方案就是停止httpd-user 守护进程的启动。无论如何,这大概是您想要的(例如,在 docker 中启动另一个服务器,如“nginx”)。为此,请编辑相关的 upstart 配置文件:
Syno-Server> cat /usr/syno/etc/synoservice.d/httpd-user.cfg
{
"init_job_map":{"upstart":["httpd-user"]},
"user_controllable":"no",
"mtu_sensitive":"yes",
"auto_start":"no"
}
所以"auto_start" 条目是"no"(如上所示)。默认情况下,它可能在您的机器上为"yes"。然后将stop on runlevel 中的[0123456] 编辑为/etc/init/httpd-user.conf:
Syno-Server> cat /etc/init/httpd-user.conf
description "start httpd-user daemon"
author "Development Infrastructure Team"
console log
reload signal SIGUSR1
start on syno.share.ready and syno.network.ready
stop on runlevel [0123456]
...
最后一步是确保httpd-user 服务确实真正启动,但随后自动停止。这是因为实际上有许多服务依赖于它的启动。重新启动您的机器,您现在将看到端口 80 上没有任何东西在侦听(或转发)。