存取 Windows 10 中 Virtualbox 上託管的 CentOS7 VM 上的 nginx Web 伺服器

存取 Windows 10 中 Virtualbox 上託管的 CentOS7 VM 上的 nginx Web 伺服器

設定:

在 Windows 10 Pro 伺服器(預覽版 10074)上執行的單一 CentOS 7.1 VM,位於 Virtualbox 5 beta 4 中(也在 4.3.8 上進行了測試)。使用 nginx/1.9.0 來提供靜態 HTML 檔案。

該虛擬機器使用 Virtualbox 中的 NAT 設定連接到我的 Intranet。我已使用標準 Virtualbox 設定將連接埠 22、80 和 443 從伺服器轉送到虛擬機器。

問題:

在虛擬機器中,我可以使用curl 來取得任何頁面(curl localhost返回預期結果)。但是,如果我嘗試從主機 Windows 伺服器或 Intranet 的任何其他用戶端(透過主機上的 IP 或本機主機)取得頁面,則會收到「無法連線」或「連線重設」錯誤。

在虛擬機器上使用 netstat,我已驗證 nginx 正在偵聽 0.0.0.0 和 [::] 上的連接埠 80 和 443。我還在 Windows 伺服器上檢查過,當虛擬機器未運行時,連接埠 80 和 443 未被使用,並且在虛擬機器運行時正在監聽它們。

檢查 nginx 產生的日誌,access.log 僅包含我的curl 請求 - 我的 error.log 中沒有出現任何相關內容。

但是,我還在伺服器上執行sshd(在連接埠22 上),並且可以從Intranet 上的任何電腦連接到該伺服器(當我轉發網際網路路由器上的連接埠時,也可以從外部連接到該伺服器),所以我不相信這是防火牆問題。

嘗試過的解決方案:

我嘗試過打開 Windows 防火牆以允許傳入連接埠 80/443 的連接,並將 Virtualbox 新增至程式例外。我也嘗試過完全停用防火牆。

我嘗試移動到主機伺服器上> 1000 的連接埠 - 但由於連接埠 22 似乎工作正常,這沒有多大意義。

不幸的是,我無法將虛擬機器連接從 NAT 更改為任何其他類型。 Virtualbox 似乎還不支援 Windows 10 中的適配器橋接(我已經嘗試了多次重新安裝和新的測試版)。

答案1

我需要使用firewall-cmd允許 http 和 https 流量通過虛擬機器的防火牆。舊版的 CentOS 將使用iptables.

相關內容