Обратный прокси-сервер NGINX не работает с другим док-контейнером - PullRequest
0 голосов
/ 08 марта 2019

У меня есть установка с двумя контейнерами докера в docker compose.Теперь я хочу использовать функцию proxy_pass из nginx для прокси соединения nginx с другим контейнером.

docker compose

version: '3.4'
services:
  reverse_proxy: 
    image: nginx:alpine
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./error.log:/var/log/nginx/error.log
    ports:
      - "8081:8081"
  apigateway.api:
    image: ${REGISTRY:-configurator}/apigateway.api:${TAG:-latest}  
    build:
      context: .
      dockerfile: src/Services/ApiGateway/ApiGateway.Api/Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://0.0.0.0:80
    ports:
      - "58732:80" 

nginx conf

worker_processes 1;

events {
    multi_accept on;
    worker_connections 65535;
}

http {
    charset utf-8;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    server_tokens off;
    log_not_found off;
    types_hash_max_size 2048;
    client_max_body_size 16M;

    # MIME
    include mime.types;
    default_type application/octet-stream;

    upstream apigateway {
        server apigateway.api:58732;
    }

    server {
        listen 8081;
        # reverse proxy
        location /configurator-api-gw/ {
            proxy_pass http://apigateway/;
            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_set_header   X-Forwarded-Host $server_name;
        }

    }
}

Когда я сейчасдоступ http://localhost:8081/configurator-api-gw/swagger Я получаю следующую ошибку в error.log.Я пробовал также разные подходы и некоторые другие примеры, но я не понимаю, почему это не работает.

2019/03/08 06:30:29 [error] 7 # 7: *Ошибка 6 connect () (111: соединение отклонено) при подключении к восходящему каналу, клиенту: 172.28.0.1, серверу:, запрос: «GET / configurator-api-gw / swagger HTTP / 1.1», восходящий поток: «http://172.28.0.5:58732/swagger", host: "localhost: 8081"

1 Ответ

0 голосов
/ 11 марта 2019

Я решил проблему.Проблема с сервером apigateway.api: 58732;Здесь нужно использовать порт 80 как внутри докерской сети.

...