Apache-2.2

每個應用程序都需要 Web 伺服器嗎?

  • January 22, 2022

伺服器只是一台帶有網路伺服器軟體(如 nginx、apache 等)的機器。當我們在託管服務(如 GoDaddy 或云服務)中託管網站時,它們是否為部署的每個應用程序提供 Web 伺服器軟體,或者一台機器(伺服器)只有一個 Web 伺服器軟體,每個應用程序都使用它,或者我們(客戶端) 需要設置網路伺服器軟體嗎?

伺服器是否可以擁有“n”個網路伺服器軟體?

在 DNS 記錄中,每個應用程序域的記錄是指向伺服器的 IP 地址還是 Web 伺服器的 IP 地址?

如果一台伺服器中的所有應用程序域都指向同一個 IP 地址,那麼請求如何路由到特定應用程序?

如果問題有任何問題,請指出,因為我是這些主題的新手。

伺服器只是一台帶有網路伺服器軟體(如 nginx、apache 等)的機器。

不必要。伺服器是一種電腦系統,用於其他系統(客戶端)提供其處理(或簡單地從其他來源獲取)並返回給客戶端的內容、數據。

如果它通過 HTTP 協議提供內容,它可能是 Web 伺服器;如果它儲存數據並允許以關係 (SQL) 或非關係方式進行數據操作,它可能是一個數據庫伺服器;如果它提供資訊,它可能是一個 DNS 伺服器關於通過 DNS 協議的主機名和 IP 地址等。

當我們在託管服務(如 GoDaddy 或云服務)中託管網站時,它們是否為部署的每個應用程序提供 Web 伺服器軟體,或者一台機器(伺服器)只有一個 Web 伺服器軟體,每個應用程序都使用它,或者我們(客戶端) 需要設置網路伺服器軟體嗎?

這取決於。有些為虛擬機(或類似的)提供了預安裝的 Web 伺服器,如 Apache,您“只需”為您的應用程序正確配置它們。其他 (AWS EC2) 僅提供普通虛擬機,您必須安裝和配置您可能需要的任何服務或包(包括 Web 伺服器)。

伺服器是否可以擁有“n”個網路伺服器軟體?

是的。同一台伺服器可以託管不同的 Web 伺服器工具(例如,ApacheNginx,用於不同的應用程序),甚至是相同 Web 伺服器技術的不同實例(例如,通過容器),或者處理多個應用程序的單個 Web 伺服器工具(可能使用虛擬主機)。

在 DNS 記錄中,每個應用程序域的記錄是指向伺服器的 IP 地址還是 Web 伺服器的 IP 地址?

它應該指向任何可以從外部路由和訪問的 IP 地址,並且以某種方式“綁定”到 Web 伺服器。一個簡單的設置可能是具有單個 IP 地址的虛擬機和偵聽該 IP 地址的 Web 伺服器。但是 Web 伺服器也可以在內部偵聽另一個地址,例如 127.0.0.1,並使用某種技術(例如 NAT)接收以 VM IP 地址作為目標地址的 HTTP 請求。等等。

如果一台伺服器中的所有應用程序域都指向同一個 IP 地址,那麼請求如何路由到特定應用程序?

這可以通過多種方式完成。首先,您可以讓不同的程序在同一個 IP 地址上偵聽不同的埠。只要埠不同,就沒有衝突 - http://www.example.com:80將到達與http://www.example.com:8080不同的 Web 伺服器(或 Web 伺服器實例)。通過使用不同的埠並將每個埠綁定到一個程序或程序“實例”(例如虛擬主機),每個請求都被轉發到正確的應用程序。

編輯

試圖回答評論中的其他問題。

如果多個應用程序部署在共享伺服器而不是虛擬機上會怎樣?如果應用程序使用 HTTPS,每個人都希望埠為 443(預設值),那麼請求如何路由?域的 DNS 記錄的 IP 地址將指向什麼?

如果多個應用程序偵聽同一埠和同一 IP,則可以執行其他類型的流量操作。例如,假設同一個 IP 綁定到三個應用程序:

app1.example.com - 埠 443

app2.example.com - 埠 443

app3.example.com - 埠 443

對相同 IP 地址和埠的 HTTP 請求如何重定向到正確的應用程序?一種方法是使用Host 標頭。如果瀏覽器想要聯繫 app1.example.com,它將向同一 IP 和埠發送 HTTP 請求,並將 Host 標頭設置為“app1.example.com”。反向代理將接受該請求,讀取 Host 標頭的值,並將該請求重定向到與“app1.example.com”關聯的程序,即使該程序偵聽與其他 Web 伺服器相同的 IP 和埠。

另一種不同的方法依賴於使用具有多個 IP 地址的機器(VM,baremetal - 無關緊要)。如果同一台機器有多個 IP 地址,它可以在同一埠上託管不同的應用程序,但地址不同,而無需使用任何 HTTP 標頭技巧。

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