在一台 Linux 机器上运行两个 Web 服务器?

在一台 Linux 机器上运行两个 Web 服务器?

问题:我有两个分别使用 JAVA 和 PYTHON 创建的 Web 应用程序。

JAVA 应用程序使用 Tomcat 服务器在端口号 8000 上运行。PYTHON 应用程序使用 web.py 并在端口号 8080 上运行。Python (API) 执行后端作业,Java (UI) 充当前端人员。

在我本地的 Ubuntu 机器上,这些应用程序运行良好。但是,我必须让这个应用程序在我的 QA 机器上运行,其中只有端口 80 和 443 开放,所有其余端口都受到限制。我尝试使用 authbind 在端口 80 上运行 java 但失败。

是否有其他方法可以使用 URL 过滤在内部将 HTTP 请求重定向到各自的 Web 服务和端口号?如果还有其他方法请分享相关信息。

提前致谢。

答案1

对此的标准解决方案是使用前端服务器,该服务器通常根据主机名将请求分派到适当的“真实”服务器。这被称为反向代理nginx经常用于此目的。从教程

/etc/nginx/nginx.conf具有两个后端的反向代理的配置 () 如下所示:

server {
    server_name java-app.example.com;
    proxy_pass http://localhost:8000/;
}

server {
    server_name python-app.example.com;
    proxy_pass http://localhost:8080/;
}

当然有更多可能有用的选项

答案2

您可以安装并配置 nginx 作为反向代理,这样您对 TCP:80 的请求将根据 HTTP 请求中的 FQDN 重定向到不同的实际端口。

看一看这里有关 nginx 配置的示例。

相关内容