Ngnix 幫助 - 使用 Nginix 的多個虛擬機器(具有單一公用 IP 的 ESXi)?

Ngnix 幫助 - 使用 Nginix 的多個虛擬機器(具有單一公用 IP 的 ESXi)?

我目前正在嘗試了解 Nginx 並需要一些指導;這對我來說很新,所以如果已經回答了這個問題,請道歉(我首先進行了搜索!)。

場景:我在 Ubuntu VM 上有一個 Seafile 伺服器 (cloud.example.com) 和一個 Zammand 伺服器 (support.example.com)(每個 VM 1 個),我使用 Certbot 對其進行了 SSL 加密。顯然我可以運行 SSL,但由於兩者都使用連接埠 443,我現在在無法正確使用 Ngnix 的情況下遇到了問題。

我的第一個問題是,我是否可以擁有另一個純粹用於Ngnix 的虛擬機,它將把url 請求傳遞給其他虛擬機,或者我是否需要在同一台伺服器上同時使用Seafile 和Zammand 來同時使用Ngnix / SSL? (我目前已將兩者安裝在一台虛擬機器上進行測試)。

如果我從單一伺服器運行(安裝了Seafile 和Zammand - 儘管我更喜歡每個伺服器都在自己的虛擬機器上),我假設我只需要編輯我的“/etc/nginx/sites-available/default”並新增路由路徑在那裡?目前我有 3 個「可用網站」——Seafile、Zammand 和預設網站。我看到有“sites-active”目前是“seafile”。因此,cloud.example.com 和 support.example.com 都路由到 seafile (cloud.example.com)

還是我的看法完全錯誤?歡迎任何建設性意見!如果我沒有描述清楚這一點,我深表歉意。

答案1

最好的選擇是創建第三個虛擬機器並在那裡設定 nginx。您也可以在任一現有虛擬機器上進行設定。

完成後,您需要設定 nginx,以使用多個「伺服器」條目,每個網域對應您正在服務的每個網域並定向到不同的後端。

網路上有很多關於如何執行此操作的不同教學。

答案2

所以你有兩個獨立的伺服器,對吧?如果這是真的,那麼您需要使用 SNI 檢查之類的工具來確定將連接代理到哪個主機。從 nginx 1.11.5 開始,無需終止 SSL 連線即可完成此操作ngx_stream_ssl_preread_module

您需要設定 ProxyPass 指令以允許它將資料傳送到代理程式後面的遠端系統。然後,您需要確保 Nginx 主機位於互聯網上,以便所有查詢首先通過它。

透過使用 SNI 檢查和 TCP 流代理,遠端伺服器直接處理所有 SSL 連接,nginx 僅代理來自一個 IP 端點的流量。

我也會檢查一下:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

特別解決使用 TCP 流代理程式時的 SNI 檢查:http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html在實際處理握手之前,SNI 包含在 TLS 握手期間,因此這允許 nginx 將流量傳送到正確的端點,並允許該端點實際進行 TLS 握手。

相關內容