如何在单个服务器/单个端口上运行采用不同技术的多个 Web 服务器?

如何在单个服务器/单个端口上运行采用不同技术的多个 Web 服务器?

我在 hetzner.de 上有一台 Ubuntu 机器,我在那里托管我的所有服务,包括

i. 多站点 wordpress(多个网站在端口 80 上的单个 wordpress 实例上运行

ii. Jira 实例当前在 80 以外的端口上运行(例如 8084)

iii. 在不同的端口上托管我的自定义应用程序的 tomcat 等等。

我需要映射一个 uri,以便所有这些服务都可以通过单个端口 80 访问。例如

假设我的域名是 xyz.com 指向这台机器,我想访问我的所有服务,例如

xyz.com/wordpress1 xyz.com/wordpress2 xyz.com/tomcat/web1 xyz.com/jira

有什么线索可以告诉我如何实现这一目标吗?

答案1

使用 Apache 或 nginx 作为反向代理

答案2

任何时候都只能有一个软件绑定到特定端口。

Nginx(和 Apache)可用作反向代理。并非所有应用程序都适合放在子目录中,这是开发人员需要考虑的问题。

如果您有 DNS 访问权限,则可以使用子域名解决此问题。

这是一个带有子域名的示例https://stackoverflow.com/questions/13240840/nginx-reverse-proxy-multiple-backends

这里有子目录,你问的nginx proxy_pass 使用子文件夹

答案3

在我看来,实现这一点的最简单方法是使用 URI ACL 的 HAProxy。您可以让后端应用程序监听 80 以外的端口,并让 HAPROXY 监听 80。然后根据 URI 请求(例如 site.com/URI)路由请求,但如前所述,您的应用程序需要知道 URI 路径,如果它不知道,那么子域将是使用域 ACL 的方法。

相关内容