
我決定在我的新伺服器上安裝 Proxmox 來託管 Web、電子郵件和 VPS 伺服器。這樣,我可以為每種伺服器類型設定多個虛擬機器。
我的 apache Web 伺服器使用 Debian 9。我還已經成功匯入了使用複製器外掛程式匯入的 WordPress 網站,而且效果完美。我將 PHPMyAdmin 中的 WP_Options 表編輯為 https 而不是 HTTP 作為網站 URL,然後我像這樣設定 Apache 虛擬主機 (mydomain.com.conf)
<VirtualHost *:80>
ServerName mydomain.com
ServerAdmin root@localhost
Redirect "/" "https:// mydomain.com"
</VirtualHost>
<VirtualHost *:443>
ServerAdmin root@localhost
DocumentRoot /var/www/mydomain.com
ServerName mydomain.com
ServerAlias www.mydomain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
<Directory /var/www/mydomain.com>
AllowOverride All
DirectoryIndex index.php
Require all granted
</Directory>
</VirtualHost>
我可以透過在 Windows 主機檔案中設定規則來本地存取我的網站,如下所示:
192.168.10.104 mydomain.com
我還設定了靜態 IP 以避免 Web 伺服器取得新的 IP 位址。我在 /etc/network/interfaces 中這樣做了
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens18
iface ens18 inet static
address 192.168.10.104
netmask 255.255.255.0
gateway 192.168.10.1
# This is an autoconfigured IPv6 interface
iface ens18 inet6 auto
我確實想指出,我為我的[公用 IP 位址][1] 建立了一個虛擬主機。
為了避免衝突,我禁用了 UFW 防火牆並刪除了fail2ban。就目前而言。
在我看來,我的 DNS、名稱伺服器和連接埠轉送設定正確。然而,我可能是錯的。
[我的網域註冊商 NS 設定][2]
[我在 DigitalOcean 上的 DNS 配置][3]
[我的連接埠轉送設定][4]
如果我嘗試使用 [UpTrends][5] 造訪我的網站,我會收到「TCP 連線失敗」。從我在網站上的本地角度來看,我的 SSL 認證也沒有問題。
有什麼建議嗎?
答案1
最後!
事實證明,除了重新啟動伺服器之外,修復方法只是重新啟動路由器(斷開電源 10 秒)。
有時問題可以透過簡單但意想不到的方式解決:)
答案2
您的 DNS 配置正確,存取http://example.com
成功連接到 publicip:80 並提供 HTTP 重新導向。
但是,連接到 publicip:443 (即https://example.com
)會返回 ICMP“主機無法訪問”,在這種情況下,該訊息必須來自您的路由器(具有公共 IP 位址的設備,無論是 Proxmox 主機還是專用路由器)事) ,或來自網頁伺服器本身。
由於 ICMP 錯誤帶有延遲,因此最有可能的來自路由器,表示 :443 的連接埠轉送規則指向錯誤的 IP 位址(未使用的 IP 位址,即 ARP 應答逾時)。
(如果是防火牆阻止,連線嘗試將立即傳回 RST 或 ICMP 錯誤,或不傳回任何內容。)
如果設定看對了,用來tcpdump
看看是什麼實際上正在發生。在 Proxmox 主機(在面向 Web VM 的介面上)上執行tcpdump -e -n -i <interface> "arp or port 443"
將顯示連接埠轉送規則嘗試到達的實際 IP 位址。
這同樣適用於一般情況;僅僅將其關閉是不夠的。您還需要查看目前的防火牆規則(實際的防火牆是 iptables 或 nft);即檢查目前狀態是否與請求的狀態相符。在您檢查iptables-save
, iptables-legacy-save
,之前,您不確定停用 ufw 是否會使防火牆完全清空nft list ruleset
。