nginx обратный прокси с Docker - Соединение отклонено при подключении к восходящему каналу - PullRequest
0 голосов
/ 16 апреля 2020

Настройка среды

У меня есть приложение, которое состоит из нескольких служб:

  • сервер jenkins
  • nginx сервер с angular
  • nginx сервер в качестве прокси

Эти службы определены в файле docker-compose:

    version: '3'
services:
  reverse:
    container_name: reverse-proxy
    build:
      context: /app/mywallet/MyWalletFe/reverse-proxy
    ports:
      - "80:80"
    networks:
      - net
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins
    volumes:
      - "$PWD/jenkins_home:/var/jenkins_home"
      - "/var/run/docker.sock:/var/run/docker.sock"
    networks:
      - net
  angular:
    container_name: mywallet_fe
    build:
      context: /app/mywallet/MyWalletFe
    networks:
      - net
networks:
  net:

Я определил следующий файл конфигурации для reverse-proxy :

upstream client {
  # angular is the name of the service in docker-compose file
  server angular:4200;
}


upstream jenkins {
  server jenkins:8080;
}

server {
  listen 80;

  location / {
    proxy_pass http://client;
  }

  location /jenkins {
    proxy_pass http://jenkins;
  }
}

Наконец, вот Dockerfile для службы reverse-proxy, которая копирует файл конфигурации в контейнер nginx:

FROM nginx
# override default files if present
COPY ./default.conf /etc/nginx/conf.d/default.conf

Цель

Моя цель - получить доступ к Jenkins с помощью SERVER_IP/jenkins

Вывод

Когда я запускаю все приложение и пытаюсь получить доступ к SERVER_IP/jenkins, я получаю следующую ошибку в обратном порядке: журналы прокси:

2020/04/15 21:44:55 [ошибка] 6 # 6: * 10 connect () не удалось (111: соединение отклонено) при подключении к восходящему каналу, клиент: MY_CLIENT_IP, сервер:, запрос: "GET / login? from =% 2Fjenkins HTTP / 1.1", восходящий поток: "http://172.18.0.5: 4200 / login? from =% 2Fjenkins ", хост: "SERVER_IP", реферер: " http://SERVER_IP / jenkins"MY_CLIENT_IP
[15 / Apr / 2020: 21: 44: 55 +0000]" GET /favicon.ico HTTP / 1.1 "502 559" http://SERVER_IP / login? from =% 2Fjenkins"" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (K HTML, как у Gecko) Chrome / 80.0.3987.163 Safari / 537.36 "" - "2020/04/15 21:44:55 [ошибка] 6 # 6: * 10 Ошибка подключения () ( 111: соединение отклонено) при подключении к восходящему каналу, клиенту: MY_CLIENT_IP, серверу:, запрос: «GET /favicon.ico HTTP / 1.1», восходящий поток: «http://172.18.0.5: 4200 / favicon.ico », хост: "SERVER_IP", реферер: "http://SERVER_IP / login? from =% 2Fjenkins "

где MY_CLIENT_IP - это IP моего ноутбука, а SERVER_IP - это IP сервера, на котором выполняется приложение.

Что не так в конфигурации обратного прокси-сервера? Если я предоставляю сервисы jenkins и angular, я могу связаться с ними, а через прокси-сервер не могу .

Аналогичный вопрос, который мне не помогает (или я не понимаю, как это мне поможет)

...