我完全搞错了 apache 中的 listen 功能。我现在的问题是。当我让它监听
NameVirtualHost *:80
Listen 127.0.0.1:80
Listen 192.168.1.23:80
可以通过网络访问吗?因为我的互联网连接到 192.168.1.23:80
答案1
检查netstat
apache 是否正在监听端口 80。
% sudo netstat -apn|grep :80
tcp 0 0 :::80 :::* LISTEN 1318/httpd
还要确保没有任何防火墙规则阻止此访问,具体来说,您应该在链上有ACCEPT
规则。INPUT
http
% sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
您可以暂时禁用防火墙以进行以下确认:
% /etc/init.d/iptables stop
那么防火墙看起来是这样的:
% sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我还会检查 Apache 错误和访问日志文件,大多数 Linux 都将它们存储在 下/var/log
,可能也是如此/var/log/httpd
。它们通常有 2 个文件,error_log
和access_log
。
关于您在启动时遇到的错误,听起来您需要ServerName
在httpd.conf
文件中设置变量。
ServerName localhost
这似乎是 Ubuntu 上 apache2 的一个问题。我在其他网站上找到了几个帖子,解决方案是将 ServerName 设置为 localhost。