使用本地 IP 地址访问本地 Web 服务器时出现 Apache 403 Forbidden 错误

使用本地 IP 地址访问本地 Web 服务器时出现 Apache 403 Forbidden 错误

当我尝试浏览存储在本地 Web 服务器 (Apache 2.2) 上的页面时,我遇到了一个奇怪的问题。当我浏览到 localhost 或端口 80 上的 127.0.0.1 时,页面按预期显示。然而,当我尝试通过引用本地 IP 地址 (192.168.xx) 浏览相同的页面时,我收到 HTTP 403(禁止)错误。本质上,虽然我指定了本地计算机的 IP http://localhost:80,但192.168.x.x:80还是无法访问。您可能会想“谁在乎?只需使用 localhost”。但是,这是解决为什么我无法从 LAN 上的不同主机远程访问这些页面的第一步。

我推测这不是防火墙问题,因为我只连接到本地机器。即便如此,我还是确认没有 iptables 规则会产生影响。

我检查了 Apache 错误日志并且相应的相关行是:

[2013 年 10 月 19 日星期六 07:38:35] [错误] [客户端 192.168.xx] 服务器配置拒绝客户端:/var/www/

我检查了大部分 apache 配置文件,它们似乎与默认安装的配置文件没有什么不同。我没在 apache2.conf 中看到任何可能存在问题的内容,并且 httpd.conf 是一个空文件。这是 /etc/apache2/sites-enabled/000-default 的摘录:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

关于我下一步该去哪里寻找解决方案,您有什么见解吗?

提前致谢。

答案1

按照要求。

由于您的 httpd.conf/vhost 正确,下一步要检查的是相关目录中的 .htaccess 文件。

首先应用 Httpd.conf/vhost,随后被请求文件夹中的 .htaccess 否决(因为 httpd.conf/vhost 首先允许)。所以我的理论是其中的一条规则导致了权限错误。

答案2

根据您的描述,我假设您使用的是基于 Debian 的 Apache 系统。我认为 httpd 没有监听您的 192.168.xx IP 地址。它只监听本地主机。您可以使用以下命令进行验证。

netstat -tulpn | grep :80

我认为您将在输出中看到 127.0.0.1:80。如果是,请检查/etc/apache2/ports.conf文件。您应该Listen 80在文件中使用以要求 httpd 监听所有 IP 地址。请参阅以下链接。

http://httpd.apache.org/docs/2.2/bind.html http://httpd.apache.org/docs/2.2/mod/mpm_common.html#listen

相关内容