conf.d 文件

conf.d 文件

从 Ubuntu 13.04 服务器升级后,www 页面不会自行显示。

错误 403 禁止您无权访问此服务器上的/。

我已经将访问控制保存从 apache2.2 更改为 apache2.4,但这不起作用。我还能做什么?

答案1

发生的情况是 apache2.4 中的配置文件的语法发生了改变。

来源:我升级到 13.10 后也遇到了这种情况

conf.d 文件

所有中的文件/etc/apache2/conf.d都应移至/etc/apache2/conf-available

它们现在的工作方式sitesmods功能都相同。只需将您的 conf 文件放入conf-available文件夹中,然后使用 启用所需的文件即可a2enconf <config-file-name>

例子:

conf.d/httpd.conf我有一个包含 ServerName 指令的文件。
为了使其工作,我必须将其移动到目录conf-available并手动启用它。

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

站点文件

以前, 中的文件/etc/apache2/sites-available没有扩展名。例如/etc/apache2/sites-available/default。现在.conf需要扩展名。

例子:

如果你有/etc/apache2/sites-available/some-site,在 13.04 中,你可以使用 启用它sudo a2ensite some-site。现在它会给你一个错误说

错误:站点某些站点不存在!

要修复此问题,请将 附加.conf到 中的所有配置文件中sites-available。您可以在 中执行相同操作sites-enabled,也可以删除所有文件并手动重新启用它们。
我建议手动执行这些操作,因为您可能需要修复每个 VHost(下一步)。

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

如果你决定手动执行这些操作:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

虚拟主机指令:

允许/拒绝 vs 要求

如果您有以下情况:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

它应该变成:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

欲了解更多信息,请查看评论经过戴夫·兰登回答在 Stack Overflow 上。

简单来说,如果您升级到 apache2.4 并保留旧版httpd.confapache2.2,allow 指令应该可以正常工作。如果您升级了您的httpd.conf(我建议这样做),您将收到 403 错误,直到您将Order/ Allow/Deny指令更改为其等效指令Require

目录选项

如果您有目录选项,请注意它们都必须以+或开头-,或者根本不要以 开头。不允许混合使用两者:

例子:

这是允许的:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

这是也是如此(请注意,这些示例并不是同时执行相同的操作,前一个示例禁用了该MultiViews选项,而下一个示例则没有):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

不再允许这样做:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

最后一个配置选项将引发语法错误:

所有选项都必须以 + 或 - 开头,或者没有选项可以。

重启 Apache

完成所有操作后,您需要重新启动 apache 服务器以使更改生效:

 sudo apache2ctl restart

您可以找到详细的升级指南官方文档中从 2.2 升级到 2.4。

答案2

我假设该网站正在您的 Ubuntu 服务器上运行。

检查您的 httpd.conf 以确保您的 DocumentRoot 设置指向正确的位置。

检查 DocumentRoot 引用的文件夹的文件权限是否可以由运行 Web 服务器的用户读取。

检查您是否有合适的 index.html/index.htm 等,并且网络服务器没有尝试进行目录列表。

答案3

我遇到了类似的问题。

除非我使用“Allow from All”,否则我无法运行 apache 2.4,这很烦人,因为我想彻底摆脱 2.4 以下版本的束缚。经过多次尝试和搜索后,我发现了对 access_compat 的引用,并意识到这只是为了兼容性。虽然 apache 文档说两者都可以使用,但它建议您不要使用。

我从 /etc/sysconfig/apache2 加载文件中删除了这个模块,这立即解决了我的问题。

问候 Liam

答案4

我正在从非标准目录提供文件,因此为了使升级工作,我必须编辑 /etc/apache2/apache2.conf 并添加:Options Indexes FollowSymLinks AllowOverride None Require all grant

经过此操作以及上述建议的更改后,403 错误消失了。

相关内容