当我尝试浏览存储在本地 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