Значение исключения: неверный заголовок HTTP_HOST: 'products_web: 8001'. Указанное доменное имя недействительно в соответствии с РФ C 1034/1035. - PullRequest
0 голосов
/ 27 апреля 2020

Используя docker, я создал 3 django проектов: - продукты, заказы, электронная почта.

поддерживающие технологии: - nginx и postgres.

Здесь каждый проект работает как микросервис для работы каждого сервиса как отдельная единица.

image to show

Мне нужно получить сведения о продукте из службы заказов , для этого я использовал конвейер запросов

orders / src / views.py

response = requests.get("http://products_web:8001/products/fetch/?prod_id=%s" % product).json()

при выполнении я получаю ответ в формате html, определяющем ошибку как Значение исключения: недопустимый заголовок HTTP_HOST: 'products_web: 8001'. Указанное доменное имя недопустимо в соответствии с RF C 1034/1035.

следующее docker -compose.yaml

version: '2'


services:



  products_web:
    build: ./products
    command: bash -c "python3 ./products/manage.py makemigrations && python3 ./products/manage.py migrate && python3 ./products/manage.py runserver 0.0.0.0:8001"
    volumes:
      - .:/code
    ports:
      - "8001:8001"
    restart: always
    depends_on:
      - datab
    links:
      - datab

  emails_web:
    build: ./emails
    command: bash -c "python3 ./emails/manage.py makemigrations && python3 ./emails/manage.py migrate && python3 ./emails/manage.py runserver 0.0.0.0:8002"
    volumes:
      - .:/code
    ports:
      - "8002:8002"
    restart: always
    depends_on:
      - datab
    links:
      - datab

  orders_web:
    build: ./orders
    command: bash -c "python3 ./orders/manage.py makemigrations && python3 ./orders/manage.py migrate && python3 ./orders/manage.py runserver 0.0.0.0:8003"
    volumes:
      - .:/code
    ports:
      - "8003:8003"
    restart: always
    depends_on:
       - datab
    links:
      - datab
    stdin_open: true
    tty: true 

  datab:
    image: postgres
    environment:
        - POSTGRES_DB=postgres
        - POSTGRES_USER=postgres
        - POSTGRES_PASSWORD=postgres

  nginx:
    image: nginx:latest
    build: ./web
    ports:
      - "8084:80"
    links:
      - products_web
      - orders_web
      - emails_web
    depends_on:
      - products_web
      - orders_web
      - emails_web

следующее nginx .conf

server {

    listen 8000;
    server_name 0.0.0.0;
    charset utf-8;

    location /api/v1/products {
      rewrite /api/v1/products(.*) /products$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_pass http://products_web:8001;
   }


   location /api/v1/emails {
      rewrite /api/v1/emails(.*) /emails$1 break;
      proxy_pass http://emails_web:8002;
      proxy_redirect off;
      proxy_set_header Host $host;
   }


   location /api/v1/orders {
      rewrite /api/v1/orders(.*) /orders$1 break;
      proxy_pass http://orders_web:8003;
      proxy_redirect off;
      proxy_set_header Host $host;
   }

}

1 Ответ

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

Предупреждение о том, что подчеркивание (_) недопустимо в имени хоста. Самое распространенное место, где вы видите подчеркивания в DNS, - это записи сервера, например: _protocol._tcp.example.com, но они не разрешены в именах хостов. Вам нужно будет переименовать услугу products_web. Возможно, поменяйте подчеркивания (_) на тире (-), например, products-web et c.

Cheers!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...