2014-12-03 128 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