Ubuntu - 将http / 2请求重定向到域和子域到不同的端口

时间:2017-08-27 10:52:45

标签: dns subdomain port http2 forwarding

我在我的ubuntu服务器上运行了两个http / 2服务器。两者都应该通过端口443到达。

  

App A:

     

在端口8443上运行,并且应该收到domain.com的请求

     

App B:

     

在端口8444上运行,并且应该获得subdomain.domain.com的请求

在Ubuntu上有一种简单的方法吗?

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。

您需要运行一个网络服务器或负载均衡器,监听端口443并正确转发请求。

在Apache中,例如,这将按如下方式处理:

Listen 443

<VirtualHost *:443>
    # This first-listed virtual host is also the default for *:443
    ServerName domain.com
    DocumentRoot "/www/domain"
    ProxyPass / h2://127.0.0.1:8443/
    ProxyPassReverse h2://127.0.0.1:8443/
</VirtualHost>

<VirtualHost *:443>
    ServerName subdomain.domain.com
    DocumentRoot "/www/otherdomain"
    ProxyPass / h2://127.0.0.1:8444/
    ProxyPassReverse h2://127.0.0.1:8444/
</VirtualHost>

现在虽然Apache在前端客户端连接和后端ProxyPass请求(使用mod_proxy_http2)中都支持HTTP / 2,但其他一些Web服务器/负载均衡器却没有(例如Nginx)。说实话,HTTP / 2的大部分好处都在于客户端的优势。因此,如果您更喜欢使用Nginx,您可以让Nginx支持HTTP / 2,并且从Nginx到后端应用程序的连接是普通的旧HTTP / 1.1。至少在HTTP / 2变得更经常受支持之前。有关详细信息,请参阅此处:HTTP2 with node.js behind nginx proxy