我在 Ubuntu 上有一个 apache2 配置。一切都运行良好,直到我尝试将所有规范重定向虚拟主机移动到一个文件中,而不是将它们分散在许多其他配置文件中。
我安排了配置文件名,以便可以严格控制首先加载哪个站点,从而控制哪个站点是 Apache 的默认站点。这是 /etc/apache2/sites-enabled 中的前两个文件,按 ls 默认的词汇顺序排序:
elyograg@smeagol:/etc/apache2$ sudo ls -al sites-enabled
total 12
drwxr-xr-x 2 root root 4096 Oct 6 16:13 .
drwxr-xr-x 9 root root 4096 Oct 6 16:12 ..
lrwxrwxrwx 1 root root 51 Jul 22 2017 000000-unknown.REDACTED.org.conf -> ../sites-available/000000-unknown.REDACTED.org.conf
lrwxrwxrwx 1 root root 47 Oct 6 16:13 0000-canonical-redirect.conf -> ../sites-available/0000-canonical-redirect.conf
今天我添加了 0000-canonical-redirect.conf 文件,我希望它成为 Apache 加载的第二个站点配置文件。以前它会加载 000000 文件作为默认站点,但自从我添加了新文件后,Apache 就选择了该文件,而不是我预期的 000000 文件。
我将下载并查看源代码,但我希望也许人们以前遇到过这个问题并确切知道这是一个错误。
elyograg@smeagol:~$ dpkg -l | grep apache2
ii apache2 2.4.52-1ubuntu4.1 amd64 Apache HTTP Server
ii apache2-bin 2.4.52-1ubuntu4.1 amd64 Apache HTTP Server (modules and other binary files)
ii apache2-data 2.4.52-1ubuntu4.1 all Apache HTTP Server (common files)
ii apache2-utils 2.4.52-1ubuntu4.1 amd64 Apache HTTP Server (utility programs for web servers)
ii libapache2-mod-dnssd 0.6-3.2 amd64 Zeroconf support for Apache 2 via avahi
ii libapache2-mod-passenger 6.0.10-3build2 amd64 web application server - apache2 integration
ii libapache2-mod-wsgi-py3 4.9.0-1ubuntu0.1 amd64 Python 3 WSGI adapter module for Apache
编辑:我尝试了希望的更明确的命名,但它仍然首先加载重定向文件。
elyograg@smeagol:/etc/apache2$ ls -al sites-enabled/
total 12
drwxr-xr-x 2 root root 4096 Oct 6 16:41 .
drwxr-xr-x 9 root root 4096 Oct 6 16:12 ..
lrwxrwxrwx 1 root root 50 Oct 6 16:25 _0000-unknown.REDACTED.org.conf -> ../sites-available/_0000-unknown.REDACTED.org.conf
lrwxrwxrwx 1 root root 46 Oct 6 16:41 111-canonical-redirect.conf -> ../sites-available/111-canonical-redirect.conf
答案1
在 IRC 上的 #httpd 中,我被引导到问题所在。毫不奇怪,这是用户错误。Apache 以 LANG=C 运行,而我的 shell 以 LANG=en_US.UTF-8 运行... 并且 ls 显示了我想要的顺序。Apache 完全按照 LANG=C 的指示对文件进行排序,而我的命名方案并不正确,无法得到我想要的结果。
答案2
如果您想添加符号链接,您必须定义源文件的完整路径。
我看到你只使用../sites-available/some-file.conf
请尝试像这样定义源文件的完整位置:
ln -s /etc/apache2/sites-available/some-apache.conf /etc/apache2/sites-enabled/some-apache.conf
然后重新加载/重新启动服务:
service apache2 restart
or
systemctl restart apache2