Назад | Перейти на главную страницу

Обработка запроса в NGINX в службе приложений Azure

У меня есть приложение UWSGI и рабочий / монитор задач Celery / Flower. Они развернуты в службе приложений Azure как многоконтейнерное приложение.

Локально я перенаправляю задания работнику, используя «HOST: worker» в HTTP-запросе. Монитор задач установлен как default_server. Оба прослушивают порт 80, поскольку служба приложений Azure позволяет использовать только порт 80/443. Локально все работает нормально (с помощью docker-compose). Однако при развертывании в службе приложений Azure маршрутизация запроса не работает, и служба приложений Azure возвращает ошибку 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";
    }
}

В конце концов я решил проблему, направив запросы на основе местоположения. Обратите внимание, что расположение было изменено, чтобы избежать конфликта с внутренней маршрутизацией серверного приложения.

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;
    }
}