Apache-2.4

如何對 Apache 子域超時進行故障排除?

  • August 20, 2020

我的伺服器上有幾個子域,當從任何 http 客戶端(在 80 上的 HTTP 或 443 上的 HTTPS,取決於子域)聯繫時,所有子域都會給我超時。

例如:http ://test.yosko.net

當直接從同一伺服器聯繫時,HTTP 請求有效並由 Apache 記錄:

$ wget http://test.yosko.net/
...
2020-08-19 12:34:20 (603 KB/s) - ‘index.html’ saved [6/6]

但是當從任何其他客戶端完成時,我會超時,並且在 Apache 的 error.log 或 access.log 中找不到任何內容。

起初我想到了我的 HTTPS 子域的 certbot 配置存在問題,但由於 HTTP 子域相同,我認為這是一個更廣泛的問題。由於伺服器上沒有代理或反向代理,我看不到它來自哪裡。

它突然發生,幾天前我的角色沒有任何改變,從那時起,在長時間的失敗之間,事情在這里和那里工作了幾個小時。

有關如何解決此問題的任何想法?

附加資訊:我在 Ubuntu Server 20.04 上使用 Apache 2.4。

編輯 1:IPv6 問題

正如這裡所建議的,我在ipv6-test.com上測試了我上面的連結,它確實給出了超時。我想我的 ISP 嘗試在 IPv6 中聯繫我的網站(它失敗了),而其他人仍在嘗試在 IPv4 中(它可以工作)。

但現在我知道我自己也可以嘗試。來自我的客戶:

$ wget -4 http://test.yosko.net/
...
2020-08-20 09:25:53 (151 KB/s) - «index.html» enregistré [6/6]

$ wget -6 http://test.yosko.net/
...
HTTP request sent, awaiting response... Read error (Connection timed out) in headers.

編輯2:目前配置

我的目前/etc/apache2/ports.conf是預設的,從所有 IP 監聽:

Listen 80

它確實適用於 IPv6(請參閱“ tcp6”提及):

$ sudo netstat -lnptu | grep "apache2\W*$"
tcp6       0      0 :::443                  :::*                    LISTEN      89445/apache2       
tcp6       0      0 :::80                   :::*                    LISTEN      89445/apache2

還有我的虛擬主機:

<VirtualHost *:80>

我也試過這個,但問題仍然存在:

<VirtualHost *:80 [::]:80>

站點 test.yosko.net 解析為 IPv4 和 IPv6 地址:

triss:~> dig test.yosko.net +short
yosko.net.
91.121.170.211
triss:~> dig test.yosko.net +short aaaa
yosko.net.
2001:41d0:1:ebd3::1

但它甚至無法響應 IPv6 上的 ping:

triss:~> ping -6 -c 20 test.yosko.net
PING test.yosko.net(2001:41d0:1:ebd3::1 (2001:41d0:1:ebd3::1)) 56 data bytes

--- test.yosko.net ping statistics ---
20 packets transmitted, 0 received, 100% packet loss, time 493ms

您確定您在該主機上正確配置了 IPv6 嗎?如果是 - 防火牆是否到位並阻止它?如果您使用隧道 - 您是否在 IPv4 防火牆中啟用了適當的協議並在隧道介面上設置了正確的 MTU?

同時,我建議刪除此主機名的 AAAA 記錄,並且只有在 IPv6 被證明可以工作時才重新啟用它。

引用自:https://serverfault.com/questions/1030758