執行VPN時顯示不正確的PHP版本

執行VPN時顯示不正確的PHP版本

我有一個奇怪的問題,我真的很想了解更多。昨天我在我的託管伺服器上部署了一個新網站。前一天我從伺服器切換PHP 5.2.17PHP 5.4.10伺服器。奇怪的是版本仍然被報道為5.2.17?我請一位同事造訪該網站,他得到了正確的版本。最後,我關閉了 VPN(未用於此特定伺服器),我立即可以看到伺服器運行正確的 PHP 版本。現在我真的很想知道為什麼會發生這種事?我唯一能想到的是,這一定是與正在運行的 VPN 隧道相關的某種快取問題?

如果我透過 SSH 在 webroot 中建立一個新文件,我將無法透過瀏覽器存取該文件,而是收到 404 頁面。如果我關閉或重新啟動 VPN,此錯誤就會消失。

我在用著朱諾脈衝作為我的 VPN 用戶端。

我注意到的另一件有趣的事情是,在我重新啟動 VPN 用戶端後,頁面再次報告正確的版本。

答案1

在我看來,這聽起來像是提供商+DNS 問題- 具體來說,我假設提供商有多台機器- 可能具有共享網絡存儲,但定期同步系統存儲- 並且通過使用/不使用VPN,您可以將路由更改為不同的機器- 之前PHP - 已更新。

其跡像是: 1. 它不是快取。重新命名 info.php 檔案排除了這一點。 2. 這是一個與路由相關的問題 - VPN 更改路由。 3.這是一個暫時的問題。

答案2

在不檢查底層設定的情況下,很難確切地說出問題是什麼,但是根據您提供的一些信息,鑑於您創建了 info2.php 檔案並遇到了相同的問題,因此不太可能是快取。

這將指示您在使用 VPN 時路由到另一台伺服器的位置。透過提供者或 DNS 處的負載平衡器(查看是否有多個記錄/循環)。您的 VPN 上沒有任何快取可能會導致此問題(我認為這就是您所遇到的情況)。

有許多不同的負載平衡器配置,但其中一種配置基於IP 的雜湊值,這可以解釋為什麼您總是堅持使用同一個系統(可能尚未同步您的變更),但在從另一個系統存取時路由到另一個系統知識產權。看 nginx 的ip_hash取得此類平衡器配置的範例。具體來說,

客戶端 IPv4 位址或整個 IPv6 位址的前三個八位元組用作雜湊金鑰。此方法確保來自相同客戶端的請求始終會傳遞到同一伺服器,除非該伺服器無法使用。

至於 DNS 選項,檢查您的網域是否路由到多個 A 記錄,也許可以使用類似的工具工具箱因為如果沒有實際的負載平衡,這也可能解釋被路由到另一個系統。

對於與此類似的情況,我想到的是最近的程式碼更改,其中未針對某些請求顯示。問題是 ENOM 允許 CNAME 存取根記錄,而根據 RFC1034 在其介面中不允許這樣做。然而,實際發生的情況是,他們只是查找CNAME 的A 記錄(在本例中是一個AWS ELB),並為ELB 解析到的兩個IP 創建了2 個A 記錄,然後幾個月後,當AWS更改了ELB 的IP 之一時路由到此沒有反映出來,因此一些請求被路由到舊的 ELB IP,並依次顯示舊的快取代碼。

相關內容