Dockerized NGINX: хост не найден в восходящем потоке "odoo: 8069" - PullRequest
0 голосов
/ 22 апреля 2020

Я учусь NGINX Обратный прокси от https://www.freecodecamp.org/news/docker-nginx-letsencrypt-easy-secure-reverse-proxy-40165ba3aee2/

Я использую dockerized NGINX. Моя конечная цель - разместить Odoo с HTTPS. Прямо сейчас я учусь обращать прокси (Odoo использует порт 8069, например, 127.0.0.1:8069 для доступа к Odoo вместо 127.0.0.1)

Я понимаю концепцию прокси и обратного прокси, но я все еще имею не разобрался про техническую часть, такую ​​как апстрим. Мне на самом деле любопытно, почему статья требует апстрим (статья, связанная с обратным прокси-сервером, который я видел на stackoverflow, не использует апстрим)

Ожидаемый результат:

Посещая пример. com, обратный прокси-сервер отправит запрос (от пользователя) с example.com на 127.0.0.1:8069

Фактический результат:

NGINX самоубийство контейнера.

sudo docker-compose up reverse вывод

Starting reverse ... done
Attaching to reverse
reverse    | 2020/04/22 14:04:05 [emerg] 1#1: host not found in upstream "odoo:8069" in /etc/nginx/conf.d/sites-enabled/odoo.conf:2
reverse    | nginx: [emerg] host not found in upstream "odoo:8069" in /etc/nginx/conf.d/sites-enabled/odoo.conf:2
reverse exited with code 1

cat /etc/nginx/conf.d/sites-available/odoo.conf вывод

upstream odoo {
  server        odoo:8069;
}

server {
  listen        80;
  server_name   example.com;

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

---- Обновление по запросу @ user2932688

cat docker-compose.yml output

version: '3'
services:
  reverse:
    container_name: reverse
    hostname: reverse
    image: nginx:1.16.1
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./volumes/nginx/config/nginx.conf:/etc/nginx/nginx.conf
      - ./volumes/nginx/config/conf.d:/etc/nginx/conf.d
      - ./volumes/nginx/certs:/etc/ssl/private
  web:
    image: odoo:13.0
    container_name: odoo
    depends_on:
      - db
    ports:
      - "8069:8069"
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./volumes/odoo/config:/etc/odoo
      - ./volumes/odoo/addons:/mnt/extra-addons
    environment:
      - HOST=db
      - USER=odoo
      - PASSWORD=odoo
  db:
    image: postgres:11.7
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data/pgdata
volumes:
  odoo-web-data:
  odoo-db-data:

sudo docker-compose up output (работающие службы: reverse, web, db)

Фактический результат: обратное суицидальное завершение контейнера.

 sudo docker-compose up
Creating network "docker-odoo-https_default" with the default driver
Creating volume "docker-odoo-https_odoo-web-data" with default driver
Creating volume "docker-odoo-https_odoo-db-data" with default driver
Creating reverse                ... done
Creating docker-odoo-https_db_1 ... done
Creating odoo                   ... done
Attaching to reverse, docker-odoo-https_db_1, odoo

.. обратный | 2020/04/22 15:23:27 [emerg] 1 # 1: хост не найден в восходящем потоке "odoo: 8 069" в /etc/nginx/conf.d/sites-enabled/odoo.conf:2 reverse | nginx: [emerg] хост не найден в вышестоящем "odoo: 8069" в / etc / nginx /conf.d/sites-enabled/odoo.conf:2

1 Ответ

0 голосов
/ 22 апреля 2020

Чтобы это работало, вам нужен контейнер odoo в вашем docker -compose.yaml, который будет прослушивать порт 8069. Прямо сейчас это выглядит так, как будто это не может быть решено.

Если у вас это есть в docker -композиции - пожалуйста, дайте нам посмотреть, чтобы мы могли вам помочь.

Плюс, выполнив sudo docker-compose up reverse, вы начинаете только reverse из целое docker -композит. хотя вы должны начать odoo в первую очередь. или начните все с sudo docker-compose up

...