我几乎尝试了所有方法让我的 Web 服务器向公众广播,但就是不起作用。每次我在 Firefox 等浏览器中输入我的服务器 IP 时,它都会一直停留在“正在等待 IP 地址...”的状态。
所以我做了以下事情:
我完全重新安装了操作系统。我使用的是 Centos 7 和 Google Cloud
我按照简单的分步指南安装了 httpd,如下所示: https://phoenixnap.com/kb/install-apache-on-centos-7
- 我使用以下命令验证了服务器是否正在监听端口 80:
netstat -anp | grep httpd。
sh-4.2# netstat -anp | grep httpd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18025/httpd
unix 3 [ ] STREAM CONNECTED 23993 18025/httpd
起初它在 tcp6 上监听,所以我输入命令 nano /etc/httpd/conf/httpd.conf 并将“Listen 80”更改为“Listen 0.0.0.0:80” 重新启动后,我仍然无法连接到我的网络服务器。
我尝试按照此处的指南配置虚拟主机:https://support.rackspace.com/how-to/set-up-virtual-hosts-on-centos/
我没有运行 IPtables。使用以下命令在防火墙中打开 80 端口没有问题
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd ––reload
我也试过
sudo firewall-cmd ––permanent ––add-port=80/tcp
sudo firewall-cmd ––permanent ––add-port=443/tcp
sudo firewall-cmd ––reload
然后我输入 sudo firewall-cmd --list-all 并看到列出了服务 http 和 https
当我在浏览器中输入服务器 ip 时,仍然无法获取网页,所以我完全禁用 selinux 和 firewalld。它仍然不起作用。
我安装了 IP 表并打开了必要的端口:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
在 Google Cloud 中的 VPC 网络 -> 防火墙规则选项卡中,您可以清楚地看到 http 对所有 IP 范围都是开放的
default-allow-http
Ingress
http-server
IP ranges: 0.0.0.0/0
tcp:80
Allow
1000
default
我在 SSH 控制台中使用 curl 命令来测试网站 curl -Ihttp://本地主机
HTTP/1.1 200 OK
Date: Sun, 22 Dec 2019 15:19:18 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Sun, 22 Dec 2019 14:54:44 GMT
ETag: "5-59a4c176b0e2b"
Accept-Ranges: bytes
Content-Length: 5
Content-Type: text/html; charset=UTF-8
它响应了 200 OK。这意味着一切都配置正确。我打开了所有端口,但在 Firefox 浏览器中输入服务器 IP 时仍然无法显示页面。我不明白……我做错了什么?
编辑:这是错误日志
[Sun Dec 22 16:11:14.246082 2019] [suexec:notice] [pid 1244] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Sun Dec 22 16:11:14.262897 2019] [lbmethod_heartbeat:notice] [pid 1244] AH02282: No slotmem from mod_heartmonitor
[Sun Dec 22 16:11:14.262979 2019] [ssl:warn] [pid 1244] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun Dec 22 16:11:14.270177 2019] [mpm_prefork:notice] [pid 1244] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips configured -- resuming normal operations
[Sun Dec 22 16:11:14.270214 2019] [core:notice] [pid 1244] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
答案1
原来是 Google 的问题。出于某种原因,尽管端口 80 和 443 已经打开,但实际上并没有打开。我不得不删除 default-allow-http 和 default-allow-https,然后重新打开端口 80 和 443,现在网站可以正常运行了。