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

Ubuntu - Redirect http/2 requests to domain and subdomain to different ports

我 运行 在我的 ubuntu 服务器上有两个 http/2 服务器。两者都应该可以通过端口 443 访问。

App A:

Runs on port 8443 and should get requests for domain.com

App B:

Runs on port 8444 and should get requests for subdomain.domain.com

在 Ubuntu 上有没有简单的方法可以做到这一点?

是的,这是可能的。

您需要 运行 网络服务器或负载均衡器侦听端口 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,但其他一些 webservers/loadbalancers 不支持(例如 Nginx ).老实说,HTTP/2 的大部分好处都在客户端到边缘。因此,如果您更喜欢使用 Nginx,例如,您可以只支持 Nginx HTTP/2,并且从 Nginx 到后端应用程序的连接是普通的旧 HTTP/1.1。至少在 HTTP/2 得到更多定期支持之前。有关更多讨论,请参见此处: