Nginx
通過在另一個埠上執行的 nginx 伺服器為執行在一個埠上的 Java 應用程序提供服務
我有一個 PHP 在目前
nginx
通過 HTTPS (443) 執行。我還有一個通過 HTTPS 埠 8443 執行的 Java 應用程序。有沒有辦法可以通過 HTTPS (443) 公開 Java 應用程序?也許使用
proxy_pass
或其他東西(見這裡例如)?我的目標是讓使用者可以通過一個埠使用這兩個應用程序:
- https://server/ - 標準網頁
- https://server/java - 重定向到 Java 應用程序
這在“網際網路上”得到了很好的介紹:研究“反向代理”和“伺服器塊”。
您的問題是單個 IP 地址只能有一個程序在埠上偵聽 - 所以它是nginx或您的 Java 應用程序。
現在,您可以將 nginx 配置為對特定域(不是 IP 地址,而是名稱服務條目,例如“yourhost.com”)的 HTTP 請求做出與其他域不同的反應。然後,您可以擁有兩個“虛擬”域:
java.server 和只是伺服器,根據您的客戶端連接到哪個伺服器,nginx 將自己處理請求(導致您的 PHP 被執行)或充當反向代理(確實是
proxy_pass
,但這遠不是唯一的方法事物)。通常,請注意這必然涉及解包 TLS(否則,nginx 無法知道所請求的域)並重新打包您的 HTTP 內容 - 即 Java 應用程序的 TLS 證書永遠不會到達客戶端。這通常可能很好,但是如果您的客戶端需要建立對 Java 應用程序的信任,那麼這是沒有選擇的。
如果這是一個內部網路,只需獲取另一個 IP 地址。內部 IP 地址不需要任何費用。如果這是一個外部服務,請考慮您是否可以僅轉向 IPv6(通常一次獲得整個 IP 地址塊,並且不會出現此問題,因為每個服務都可以擁有自己的服務),或者是否你可以把東西放在不同的 IPv4 地址上。