nginx
我有一个正在通过 HTTPS (443)运行的 PHP 。我还有一个通过 HTTPS 端口 8443 运行的 Java 应用程序。
有没有办法可以通过 HTTPS (443) 公开 Java 应用程序?也许使用proxy_pass
或其他东西(参见这里例如)?
我的目标是用户可以通过单个端口使用这两个应用程序:
- https://server/ - 标准网页
- https://server/java - 重定向到 Java 应用程序
答案1
这在“互联网上”确实得到了广泛的报道:研究“反向代理”和“服务器块”。
您的问题是单个 IP 地址只能有一个进程在端口上侦听 – 所以它是任何一个nginx或者您的 Java 应用程序。
现在,您可以配置 nginx 以响应特定的 HTTP 请求领域(不是 IP 地址,而是名称服务条目,例如“yourhost.com”)与其他地址不同。然后,您可以拥有两个“虚拟”域:
java.server 和服务器,并且根据您的客户端连接到哪个,nginx 将处理请求本身(导致您的 PHP 被执行)或充当反向代理(确实是proxy_pass
,但这远不是唯一的方法事物)。
一般来说,要注意这个一定涉及解包 TLS(否则 nginx 无法知道所请求的域)并重新打包您的 HTTP 内容 - 即 Java 应用程序的 TLS 证书永远不会到达客户端。这通常可能很好,但如果您的客户端需要建立对 Java 应用程序的信任,那就别无选择。
如果这是内部网络,只需获取另一个 IP 地址即可。内部 IP 地址不需要任何费用。如果这是一个外部服务,请考虑是否可以仅转向 IPv6(通常一次获得一整块 IP 地址,并且不会出现此问题,因为每个服务都可以有自己的),或者是否可以你可以把东西放在不同的 IPv4 地址上。