如何配置 Apache 站点,专门用于不包含域名的请求(即直接来自 IP,http://123.45.67.89/)?
这个答案建议创建一个虚拟主机,例如:
<VirtualHost *>
DocumentRoot /www/default
# ...
</VirtualHost>
但这在 Apache 2.4.18 上对我来说不起作用。
我还尝试指定default.conf
没有定义 ServerName 的站点,例如:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /log/ "/var/log/"
<Directory "/var/log/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all
Require all granted
</Directory>
</VirtualHost>
但这也不起作用。对我的服务器 IP 的所有请求都超时,而服务器对域名主机的请求却立即响应。
查看我的 apache error.log,我看到大量类似的行:
[Sun Oct 29 21:13:13.843598 2017] [core:notice] [pid 5650:tid 139875504514944] AH00051: child pid 23179 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Sun Oct 29 21:13:13.843609 2017] [core:error] [pid 5650:tid 139875504514944] AH00546: no record of generation 0 of exiting child 23179
[Sun Oct 29 21:13:14.845641 2017] [core:notice] [pid 5650:tid 139875504514944] AH00051: child pid 23183 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Sun Oct 29 21:13:14.845704 2017] [core:error] [pid 5650:tid 139875504514944] AH00546: no record of generation 0 of exiting child 23183
[Sun Oct 29 21:13:14.845733 2017] [core:notice] [pid 5650:tid 139875504514944] AH00051: child pid 23184 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Sun Oct 29 21:13:14.845746 2017] [core:error] [pid 5650:tid 139875504514944] AH00546: no record of generation 0 of exiting child 23184
[Sun Oct 29 21:13:14.845770 2017] [core:notice] [pid 5650:tid 139875504514944] AH00051: child pid 23185 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Sun Oct 29 21:13:14.845783 2017] [core:error] [pid 5650:tid 139875504514944] AH00546: no record of generation 0 of exiting child 23185
我猜这不太好?什么会导致 Apache 出现段错误?
答案1
问题原来是 Apache 可以同时运行的 ModWSGI 站点数量的错误/限制。我有大约 20 个 WSGI 站点运行 Django 应用程序,显然这导致 Apache 崩溃并关闭了我试图测试的“简单”站点。
因此,我的上述示例实际上都有效,但我必须首先删除几个 WSGI 站点以防止 Apache 崩溃。
答案2
我相信 Apache 使用目录中 *.conf 文件的字母顺序sites-enabled
。因此,如果我在服务器上有一些网站:
example.org.conf
example.org-ssl.conf
another-domain.conf
another-domain-ssl.conf
并且我想使用 example.org 作为“默认”站点,您可以创建一个指向您想要的站点的符号链接,并使用类似的名称000-default.conf
(Debian 就是这样做的)。
000-default.conf -> example.org.conf