nginx 不同端口有不同的名称

nginx 不同端口有不同的名称

我有两个供内部使用的 Web 应用程序(webapp1 端口 7000 和 webapp2 端口 8000),托管在我的服务器 VM 上,IP 地址为 192.168.15.10(ubuntu 20.04)

我想看看是否可以为这两个 Web 应用程序分配不同的名称。

我希望事情的运作方式是:

如果内部用户在浏览器中输入 webapp1.random-company.com,则会将用户定向到端口为 7000 的 webapp1(192.168.15.10:7000)

如果内部用户在浏览器中输入 webapp2.random-company.com,则会将用户定向到端口为 8000 的 webapp2(192.168.15.10:8000)

我尝试在 192.168.15.10 上使用 nginx,并能够将用户定向到 webapp1.random-company.com (192.168.15.10:7000)。但是,我无法将用户定向到 webapp2.random-company。事实上,当用户输入 webapp1.random-company.com:8000 时,它会将用户定向到 webapp2。

这是可能的吗?

一个应用程序用django构建,另一个应用程序用flask构建

答案1

不要在 URL 中寻址端口,nginx 的强大之处在于其反向代理功能。

首先,为每个 Web 应用程序创建不同的配置文件,不要把所有内容都放在一个服务器配置中——或者更糟的是,在nginx.conf文件。设置上游在你的主要之上服务器块对于每个应用程序:

upstream webapp1 {
    server 127.0.0.1:7000 weight=1 fail_timeout=0;  #the timeout and weight settings are optional
    }

在服务器块内部,当 nginx 访问位置“/”时,调用上游:

server {
        listen 443 ssl http2; #if you go with HTTPS - which you should
        server_name webapp1.random-company.com;
[...]

location / {
        [...]
        proxy_pass http://webapp1;
    }

重复web应用程序2因此:

upstream webapp2 {
    server 127.0.0.1:8000;
    }

server {
        listen 443 ssl http2; #if you go with HTTPS - which you should
        server_name webapp2.random-company.com;
        [...]

location / {
        [...]
        proxy_pass http://webapp2;
    }

关于 Django / Flask 应用程序,您实际上不需要通过 TCP/IP 调用应用程序,您可以让 nginx 直接监听它们的 UNIX 套接字。您使用什么来交付应用程序?uWSGI、Gunicorn、(...)?

更多关于 uWSGI 上的 Flask 的阅读

一般来说,这不一定是 Ubuntu 主题,也许您可​​能想检查 StackOverflow 或 Serverfault。

相关内容