Служба приложений Azure с несколькими контейнерами (предварительная версия) Ошибка подключения NGINX () (111: соединение отклонено) проблема

Мой nginx.conf работает, как ожидалось, локально без ошибок, но при переходе в эту среду службы приложений я получаю ошибки, описанные ниже.

Я разрабатываю приложение React, основанное на TypeScript, с использованием многоконтейнерного (предварительного просмотра) приложения Службы приложений Azure в веб-приложении для контейнеров, но у меня возникают некоторые проблемы с NGINX. Основные ошибки, которые я получаю, - это журналы ошибок, в которых говорится следующее, когда я пытаюсь запустить службу приложений:

  • "connect () не удалось (111: соединение отклонено)"
  • "нет прямых трансляций при подключении к апстриму"

Мой WEBSITES_PORT под App Service > Settings > Configuration установлен на 80. Я также пытался установить его на80:80. В обоих случаях я получаю те же журналы ошибок ниже. НастройкаWEBSITES_PORT к 3001 и удаление nginx из списка служб в файле настроек контейнера приводит к успешному развертыванию службы приложений.

Сообщите мне, есть ли другие файлы, которые я могу предоставить в дополнение к приведенным ниже.

Мои настройки контейнера находятся в App Service > Settings > Container Settingsуказывая на мой частный реестр контейнеров Azure, в котором хранятся все мои образы приложений. Структура очень похожа на файл docker compose, который я использую для локального развертывания.

version: '3.3'
services:
 mysite:
  image: "reactapp.azurecr.io/my_site_img"
  ports:
  - "3001:3001"
 nginx:
  image: "reactapp.azurecr.io/nginx"
  ports:
  - "80:80"

An nginx.conf который контролирует маршрутизацию в моем образе nginx.

upstream my_site_proxy {
  server localhost:3001;
}
server {
  listen       0.0.0.0:80;
  server_name  localhost;
  location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass http://my_site_proxy/;
      proxy_redirect off;
  }
}

Файл журнала ошибок, который создается, когда я пытаюсь запустить службу приложений Azure с указанной выше конфигурацией.

2020-07-13T01:22:52.929149550Z 2020/07/13 01:22:52 [error] 27#27: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.7.1, server: localhost, request: "GET /robots1234.txt HTTP/1.1", upstream: "http://127.0.0.1:3001/robots1234.txt", host: "127.0.0.1:4548"
2020-07-13T01:22:52.929653182Z 2020/07/13 01:22:52 [warn] 27#27: *1 upstream server temporarily disabled while connecting to upstream, client: 172.16.7.1, server: localhost, request: "GET /robots1234.txt HTTP/1.1", upstream: "http://127.0.0.1:3001/robots1234.txt", host: "127.0.0.1:4548"
2020-07-13T01:22:52.930048306Z 2020/07/13 01:22:52 [error] 27#27: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.7.1, server: localhost, request: "GET /robots1234.txt HTTP/1.1", upstream: "http://127.0.0.1:3001/robots1234.txt", host: "127.0.0.1:4548"
2020-07-13T01:22:52.930060507Z 2020/07/13 01:22:52 [warn] 27#27: *1 upstream server temporarily disabled while connecting to upstream, client: 172.16.7.1, server: localhost, request: "GET /robots1234.txt HTTP/1.1", upstream: "http://127.0.0.1:3001/robots1234.txt", host: "127.0.0.1:4548"
2020-07-13T01:22:52.936363702Z 172.16.7.1 - - [13/Jul/2020:01:22:52 +0000] "GET /robots1234.txt HTTP/1.1" 502 157 "-" "-" "-"
2020-07-13T01:22:53.004840493Z 2020/07/13 01:22:53 [error] 27#27: *1 no live upstreams while connecting to upstream, client: 172.16.7.1, server: localhost, request: "GET /robots933456.txt HTTP/1.1", upstream: "http://my_site_proxy /robots933456.txt", host: "127.0.0.1:4548"
2020-07-13T01:22:53.005790052Z 172.16.7.1 - - [13/Jul/2020:01:22:53 +0000] "GET /robots933456.txt HTTP/1.1" 502 157 "-" "-" "-"
2020-07-13T01:22:53.024544427Z 2020/07/13 01:22:53 [error] 27#27: *4 no live upstreams while connecting to upstream, client: 172.16.7.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://my_site_proxy /", host: "mysite.azurewebsites.net", referrer: "https://portal.azure.com/"
2020-07-13T01:22:53.025501687Z 172.16.7.1 - - [13/Jul/2020:01:22:53 +0000] "GET / HTTP/1.1" 502 559 "https://portal.azure.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" "198.8.81.196:62138"
2020-07-13T01:22:53.152345935Z 2020/07/13 01:22:53 [error] 27#27: *5 no live upstreams while connecting to upstream, client: 172.16.7.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "http://my_site_proxy /favicon.ico", host: "mysite.azurewebsites.net", referrer: "https://mysite.azurewebsites.net/"
2020-07-13T01:22:53.153395901Z 172.16.7.1 - - [13/Jul/2020:01:22:53 +0000] "GET /favicon.ico HTTP/1.1" 502 559 "https://mysite.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" "198.8.81.196:62138"

1 ответ

Вам нужно изменить конфигурацию восходящего потока nginx на это:

upstream my_site_proxy {
  server mysite:3001;
}

Вы должны подключиться к mysite, которое является именем вашего контейнера приложения. Docker преобразует это DNS-имя в IP-адрес контейнера приложения. Вы бы подключились только кlocalhost если вы запускали nginx и ваше приложение в одном контейнере (что не является лучшей практикой).

Другие вопросы по тегам