Apache 在 CentOS 上无法在外部 IP 上运行

Apache 在 CentOS 上无法在外部 IP 上运行

我有一台新安装的 CentOS 5.6 机器,可以通过 elinks 在本地访问 httpd。但是它无法从其他 IP 访问。我可以 ping 该 IP,但如果我连接到端口 80,则无法获得到主机的路由。我假设某些防火墙规则阻止了对端口 80 的访问,并且检查了 iptables,一切似乎正常。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

答案1

您似乎没有允许端口 80 上的流量的规则,请尝试此操作

/sbin/iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT

如果有效,则使用以下命令保存防火墙配置

/sbin/service iptables save 

另外要检查的是 Apache 是否已配置为监听您的外部 IP 地址。检查文件中的指令/etc/httpd/conf/httpd.conf。它应该是这样的

Listen 80 

监听所有可用的地址。

答案2

如果启用了 SELinux - 首先检查所有与 apache 相关的 SELinux 布尔值:

[root@localhost ~]# getsebool -a | grep httpd
       . . . . . . 
httpd_builtin_scripting --> on
httpd_can_network_connect --> off
httpd_can_network_connect_db --> off
httpd_can_network_relay --> off
httpd_disable_trans --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> on
     . . . . . . . .

如果httpd_can_network_connect --> off禁用 httpd 上的 SELinux 限制:

[root@localhost ~]# setsebool -P httpd_can_network_connect on

或者使用系统配置-selinux,也称为 SELinux 管理图形工具,用于控制特定守护进程的布尔值。

相关内容