我有一个运行 Centos7.1 的远程 Apache 服务器,但我通常使用端口 2222 上的 DirectAdmin 来管理它。这个问题首先出现在我的 SSL 证书过期之后。我尝试登录并更新证书。由于我的 ISP 更改了我的 IP 地址,防火墙阻止了我,因此我在连接端口 22 和 2222 时遇到了一些问题。在某个时候,我重新启动了服务器,我认为那时每个人都无法访问 80 和 443。但据我所知,我没有对服务器上的设置进行任何更改。我尝试完全关闭防火墙,以消除任何可能阻碍我的防火墙问题。
我在服务器上有 3 个 IP 地址,2 个帐户和几个不同的网站。通常我可以登录端口 2222 来管理服务器,但该端口无法访问,通常的端口 80 和 443 也无法显示网页。我已经通过在我的 Mac 上运行端口扫描进行了测试。只有 SSH 端口 22 可以访问。只有这台服务器有问题,我可以连接到其他服务器和网站。
到目前为止我已经测试了以下内容。
systemctl status httpd - 有一些警告,但并不严重,在问题发生之前就出现了
[root@svr ssh]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-04-13 02:50:04 CEST; 24h ago
Process: 9675 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 1454 (httpd)
Status: "Total requests: 1; Idle/Busy workers 100/0;Requests/sec: 8.82e-05; Bytes served/sec: 0 B/sec"
CGroup: /system.slice/httpd.service
├─ 1454 /usr/sbin/httpd -DFOREGROUND
├─ 9676 /usr/sbin/httpd -DFOREGROUND
└─10031 /usr/sbin/httpd -DFOREGROUND
Apr 13 02:50:04 my.server.name httpd[1454]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 13 02:50:04 my.server.name httpd[1454]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 13 02:50:04 my.server.name httpd[1454]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 13 02:50:04 my.server.name httpd[1454]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 13 02:50:04 my.server.name systemd[1]: Started The Apache HTTP Server.
Apr 14 00:11:01 my.server.name httpd[9675]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 14 00:11:01 my.server.name httpd[9675]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 14 00:11:01 my.server.name httpd[9675]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 14 00:11:01 my.server.name httpd[9675]: AH00112: Warning: DocumentRoot [/home/admin/domains/sharedip] does not exist
Apr 14 00:11:01 my.server.name systemd[1]: Reloaded The Apache HTTP Server.
服务器上的 CURL 确认 Apache 服务器在这些端口上运行
[root@svr ssh]# curl localhost:80
<html>Apache is functioning normally</html>
[root@svr ssh]# curl localhost:2222
<html>
<head>
<title>DirectAdmin Login</title>
<meta name="robots" content="noindex,nofollow">
<style>
*{ FONT-SIZE: 8.5pt; FONT-FAMILY: verdana; } b { FONT-WEIGHT: bold; } .listtitle { BACKGROUND: #425984; COLOR: #EEEEEE; white-space: nowrap; border-radius: 3px; box-shadow: 1px 1px 3px #727272; } td.list { BACKGROUND: #EEEEEE; white-space: nowrap; } input { border-radius: 3px; padding-left: 4px; padding-right: 4px; } .inset { border: 1px inset #DDDDDD; } #footer { position: fixed; bottom: 0; width: 100%; padding-bottom: 20px; text-align: center; color: #A1A1A1; } #outofsync { font-weight: bold; color: #990000; }</style>
</head>
服务器上的 Netstat(出于安全原因,将我的服务器 IP 中的前两个数字替换为 X)
[root@svr ssh]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1484/mysqld
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 2665/exim
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 1135/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1135/dovecot
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2665/exim
tcp 0 0 X.X.60.245:53 0.0.0.0:* LISTEN 2726/named
tcp 0 0 X.X.60.243:53 0.0.0.0:* LISTEN 2726/named
tcp 0 0 X.X.2.221:53 0.0.0.0:* LISTEN 2726/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2726/named
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1167/pure-ftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1128/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2726/named
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2665/exim
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 1135/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 1135/dovecot
tcp6 0 0 :::587 :::* LISTEN 2665/exim
tcp6 0 0 :::2222 :::* LISTEN 1151/directadmin
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 1454/httpd
tcp6 0 0 :::465 :::* LISTEN 2665/exim
tcp6 0 0 :::21 :::* LISTEN 1167/pure-ftpd
tcp6 0 0 :::22 :::* LISTEN 1128/sshd
tcp6 0 0 ::1:953 :::* LISTEN 2726/named
tcp6 0 0 :::25 :::* LISTEN 2665/exim
tcp6 0 0 :::443 :::* LISTEN 1454/httpd
udp 0 0 X.X.60.245:53 0.0.0.0:* 2726/named
udp 0 0 X.X.60.243:53 0.0.0.0:* 2726/named
udp 0 0 X.X.2.221:53 0.0.0.0:* 2726/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 2726/named
udp 0 0 127.0.0.1:323 0.0.0.0:* 762/chronyd
udp6 0 0 ::1:323 :::* 762/chronyd
服务器上的 ifconfig
[root@svr ssh]# ifconfig
enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet X.X.2.221 netmask 255.255.255.255 broadcast X.X.2.221
inet6 X:X:2a:322::2 prefixlen 64 scopeid 0x0<global>
inet6 X::X:eff:feee:5e6 prefixlen 64 scopeid 0x20<link>
ether X:X:0e:ee:05:e6 txqueuelen 1000 (Ethernet)
RX packets 1321177 bytes 307234082 (293.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 989738 bytes 132392622 (126.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xef000000-ef020000
enp0s31f6:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet X.X.60.243 netmask 255.255.255.248 broadcast X.X.60.247
ether X:X:0e:ee:05:e6 txqueuelen 1000 (Ethernet)
device interrupt 16 memory 0xef000000-ef020000
enp0s31f6:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet X.X.60.245 netmask 255.255.255.248 broadcast X.X.60.247
ether X:X:0e:ee:05:e6 txqueuelen 1000 (Ethernet)
device interrupt 16 memory 0xef000000-ef020000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 229 bytes 22844 (22.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 229 bytes 22844 (22.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
答案1
因为我是新来的,所以我无法发表评论 - 抱歉。
首先,我看不到 httpd 在 TCP 上监听端口 80,只有 TCP6。我的理解是 httpd 只会响应 IPV6 地址。
您应该验证防火墙是否打开了适当的端口。
使用以下命令查看当前允许的端口;
sudo firewall-cmd --list-all --zone=public
假设您的默认区域是公共的。
通过 ssh 您可以按如下方式打开端口;
sudo firewall-cmd --add-port=2222/tcp --zone=public --permanent
sudo firewall-cmd --reload
使用类似的命令打开服务;
sudo firewall-cmd --add-service=http --add-service=https --permanent
sudo firewall-cmd --reload
确保防火墙允许您所需的端口或服务后,您应该能够连接。
您说您的 IP 地址已更改,但您没有说明更改的是您(客户端)还是服务器地址。如果是服务器,请确保 DNS 指向正确的地址。简单的“ping youdomainname”应该可以回答这个问题。
有各种在线端口扫描器可以扫描开放端口,我建议使用一个来确保您的域处于活动状态并且正确的端口对外界开放。
如果以上全部正确,那就是;
- 端口已开放
- 已确认 IP 地址
- httpd 正在监听 TCP 和 TCP6
认为应该对你有用。