我无法从另一台机器上的浏览器访问我的服务器(它给出“连接已超时”错误),尽管从机器内的浏览器键入http://localhost
或http://my-ip-here
可以工作。我可以从其他机器 ping 和 ssh 进入服务器;似乎 apache 拒绝了端口 80 浏览器连接。
我该怎么做才能进一步诊断/修复此问题?提前感谢您的帮助。
编辑:没有防火墙。这是我的默认站点:
keone@kserver:/etc/apache2/sites-enabled$ ls -l
total 0
lrwxrwxrwx 1 root root 26 2010-12-16 15:20 000-default -> ../sites-available/default
keone@kserver:/etc/apache2/sites-available$ cat default
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/manual
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
还有,这个和这个帖子似乎验证没有防火墙:
keone@kserver:/etc/apache2$ sudo /sbin/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
keone@kserver:/etc/apache2$ sudo /sbin/iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
答案1
在客户端和服务器上运行 tcpdump 并查看数据包是否通过也可能会有所帮助
典型的交换机:tcpdump -i -n -p port 80
-n = 不解析主机名 -p = 非混杂模式
另一件需要检查的事情是你的 apache 配置中的 listen 指令,尝试:grep -ir listen /etc/httpd/ 这应该是类似 *:80 或你的 ip 地址各一个:80
答案2
您需要检查 apache 所在机器上运行的防火墙 - 它可能阻止了端口 80。一旦解除阻止,您应该能够从另一台机器访问它。
答案3
- 关闭防火墙(暂时..稍后,您可以修复规则)(或允许端口 80 连接)。
- 从远程机器 Ping/traceroute 到 IP(apache 运行的地方)。
步骤 1、2 应该能让您了解问题所在。另外,请检查您的 apache 配置。确保您的默认站点配置中未提及“允许来自本地主机/拒绝来自所有人”。
答案4
在您的客户端计算机上,通过端口 80 远程登录到服务器。
如果结果是连接被拒绝,那么唯一的原因是防火墙阻止(您说它关闭)或 Apache 没有在公共 IP 上运行。
如果结果超时,并且 ping 正常,那么除了防火墙之外我看不出还有其他原因。
如果可以连接,那么至少您已经联系到了 Apache,并且知道问题出在那一边。