如何在Apache中禁用默认文档根目录?


13

我在运行Apache Httpd的服务器上托管了一些网站。每个网站都有其自己的域或子域以及虚拟主机。因此,我不需要默认的文档根目录。有可能禁用DocumentRootin /etc/httpd/conf/httpd.conf吗?

Answers:


10

感谢您提供其他答案。我通过添加没有任何权限的默认虚拟主机解决了该问题。全局DocumentRootServerName选项必须与虚拟主机中指定的选项匹配。

/etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...

/etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>

这样,当通过服务器的ip直接访问服务器时,我收到403禁止消息,这正是我想要的。如果我不需要/var/www/html现有目录,那就更好了,但是如果我指定类似的东西,Apache会抱怨/dev/null


6

我不确定您是否要这样做。如果apache配置中没有默认虚拟主机,则第一个定义的虚拟主机将成为default

您真正需要做的就是让默认设置为空白页。


6

是和否

您可以注释掉或删除该DocumentRoot指令,没问题。但这并没有太大的用处,因为PREFIX/htdocs/在构建apache时,它将默认为设置PREFIX 的默认目录。

当您设置了VirtualHosts后,所有未由显式配置的虚拟主机处理的请求都将由默认虚拟主机(通常是第一个,但httpd -S会告诉您)处理。


1

带扩展任何Apache配置文件.conf位于内/etc/httpd/conf.d/将作为Apache配置的一部分。因此,要禁用默认的“欢迎”页面配置,我们需要重命名其配置/etc/httpd/conf.d/welcome.conf:

第一步移动默认欢迎文件:

sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup 

第二步重新启动Appache2服务

sudo systemctl restart httpd

0

在/etc/httpd/conf/httpd.conf中,如果您的Listen指令是

Listen 80

这意味着

*:80

您已经在/etc/httpd/conf/httpd.conf和/etc/httpd/conf.d/default.conf中定义了一对<listener>+ <servename>,它们是相同的:*:80+ <server-ip>。因此,Apache仅考虑一个因素。

因此,您的vhost配置没有用。

您的/etc/httpd/conf/httpd.conf足以阻止对/ var / www / html目录的访问。

只需添加:

<Directory /var/www/html>
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

请阅读https://httpd.apache.org/docs/2.4/en/vhosts/name-based.html#alg

服务器如何选择适当的基于名称的虚拟主机

必须认识到,基于名称的虚拟主机解析的第一步是基于IP的解析。基于名称的虚拟主机解析仅在将候选范围缩小到基于IP的最佳匹配之后才选择最合适的基于名称的虚拟主机。在所有VirtualHost指令中对IP地址使用通配符(*),使基于IP的映射无关紧要。

当请求到达时,服务器将根据请求使用的IP地址和端口找到最佳(最特定)匹配参数。如果有多个包含此最佳匹配地址和端口组合的虚拟主机,则Apache将进一步比较ServerName和ServerAlias指令与请求中存在的服务器名称。

如果从任何基于名称的虚拟主机中省略ServerName指令,则服务器将默认为从系统主机名派生的标准域名(FQDN)。隐式设置的服务器名称可能导致虚拟主机匹配违反直觉的行为,因此不建议使用。

IP和端口组合的默认基于名称的虚拟主机如果在包含最特定的匹配IP地址和端口组合的虚拟主机集中未找到匹配的ServerName或ServerAlias,则将使用第一个列出的与之匹配的虚拟主机。


0

只需将默认端口更改为:

Listen 80
Listen 8080 # any fake port

并将* .80留在VirtualHost中

适用于Apache2和Centos 7

您可以在文档中找到更多示例。看一下_default_变量。


0

为了禁用此页面,我们必须将文件/etc/httpd/conf.d/welcome.conf重命名为其他名称,或者如果不需要它可以将其删除。

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup

确保使用以下命令重新启动Apache(以root用户身份):

systemctl重新启动httpd

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.