2014-12-03 90 views
-2

我的問題很可能是微不足道的,也可能是重複的,但是我無法制定它,或者它尚未在SO上得到解答。公開一個不監聽端口80的網絡服務器

我在數字海洋液滴上有兩個網絡服務器。一位正在監聽端口80,可以通過example.com(DNS位於路由53上)訪問,另一個端口位於端口8080上:我如何才能從example-2.com訪問此端口?

我想我正在尋找將攔截HTTP請求,檢查引用的軟件和路由那些來自example.com來港80和從example-2.com來港8080。它是什麼?

+1

你也許可以用反向代理要做到這一點,但總的來說,你不能有兩個不同的過程監聽相同的TCP/IP端口。 – 2014-12-03 17:26:31

+0

好,所以反向代理會監聽端口80上的所有內容,並重定向到其餘的服務? – Cystack 2014-12-03 17:31:50

回答

1

這隻能使用DNS才能完成。默認情況下,當URL以「http」開頭而沒有指定端口時,Web瀏覽器嘗試連接到端口80。用戶必須知道連接到端口8080和顯式訪問URL作爲

http://example-2.com:8080 

我假設你在相同的操作系統環境/ IP地址同時運行Web服務器實例,雖然這也將單獨工作託管環境。您可能需要的是一個反向Web代理,它可以檢查請求的域名和路由到適當的服務器實例。您將在端口80上運行反向Web代理,並可能將您當前在端口80上運行的服務器移動到另一個端口(如8081)。

Apache與mod_proxy和虛擬主機設置是一個可能的解決方案。假設example.com和example-2.com點到Apache實例配置它是這樣的:

<VirtualHost *:80> 
ServerName example.com 
    ServerAdmin [email protected] 

    ProxyRequests off 
    ProxyPreserveHost on 
    ProxyPass/http://localhost:8081/ 
    ProxyPassReverse/http://localhost:8081/ 
    <Proxy *> 
      Order allow,deny 
      Allow from all 
    </Proxy> 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName example-2.com 
    ServerAdmin [email protected] 

    ProxyRequests off 
    ProxyPreserveHost on 
    ProxyPass/http://localhost:8080/ 
    ProxyPassReverse/http://localhost:8080/ 
    <Proxy *> 
      Order allow,deny 
      Allow from all 
    </Proxy> 
</VirtualHost> 
+0

這工作;小心,在':8080'後面的第二個VirtualHost上沒有'/' – Cystack 2014-12-03 18:13:13

+0

對不起。你也可以考慮你的防火牆配置(或者你的Web服務器配置爲主機的接口)。用戶無需直接使用此配置訪問:8080和:8081(代理代表他們),因此我建議將這些端口鎖定到代理服務器(在本例中可能是localhost)。 – JasonCG 2014-12-03 18:19:37