在 Azure 应用服务上的 NGINX 中处理请求

在 Azure 应用服务上的 NGINX 中处理请求

我有一个 UWSGI 应用程序和一个 Celery/Flower 任务工作器/监视器。它们作为多容器应用程序部署在 Azure App Service 上。

在本地,我通过在 HTTP 请求中使用“HOST: worker”将作业路由到工作器。任务监视器设置为 default_server。两者都在端口 80 上监听,因为 Azure App Service 仅允许公开端口 80/443。本地一切正常(使用 docker-compose)。但是,当部署到 Azure App Service 时,请求的路由不起作用,Azure App Service 返回 404 错误,并建议设置自定义域。

如果不设置自定义域,我可以通过什么选项来解决这个问题?

这是我的 nginx.conf

    server {
        listen 80;
        server_name worker;

        location / {
            include uwsgi_params;
            uwsgi_pass flask:5001;
        }
    }
    server {
    listen 80 default_server;
    server_name monitor;


    charset utf-8;

    location / {
        proxy_pass http://monitor:5555;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

答案1

我最终通过根据位置路由请求解决了该问题。请注意,位置已更改,以避免与后端应用程序的内部路由发生冲突。

server {
    listen 80 default_server;
    charset utf-8;
    location / {
        proxy_pass http://monitor0:5555;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    location /worker0/ {
        include uwsgi_params;
        uwsgi_pass flask:5001;
    }
}

相关内容