带有 docker-compose 的 nginx 反向代理传递到错误的容器

问题描述 投票:0回答:1

我在 docker-compose.yml 中设置了一个由 3 个容器组成的网络。 2 个容器是 Web 应用程序,第三个容器是反向代理。所有 3 个容器都运行 nginx。 这是反向代理的 nginx.conf:

events {}
http {
    server {
        listen       8090;
        server_name  localhost;
        location / {
            proxy_pass http://myappui:8080;
        }
        location /admin/ {
            proxy_pass http://myappadmin:8081/;
#  this works  proxy_pass http://microsoft.com/;
        }
        }
    }

问题在于位置 /admin/ 的 proxy_pass 以某种方式将调用路由到第一个容器作为 http://myappui:8080/admin,而不是传递到第二个容器作为 http://myappadmin:8081/。如果对于位置 /admin/,我将 myappadmin:8081 替换为 microsoft.com,则它可以正常工作,并且呼叫将正确路由到 microsoft.com。

如果我使用自动分配的主机端口调用第二个容器 myappadmin,它将正确打开 myappadmin 应用程序。

这是我的 docker-compose:

version: '3.4'

services:
  myappui:
    build:
      dockerfile: ./Docker/Dockerfile.ui
    tty: true
    container_name: myappui
    ports:
    - "8080"
    networks:
    - webnet

  myappadmin:
    build:
      dockerfile: ./Docker/Dockerfile.admin
    tty: true
    container_name: myappadmin
    ports:
    - "8081"
    networks:
    - webnet    

  nginx: 
    image: nginx:latest
    tty: true
    container_name: myappreverseproxy
    ports:
    - "8090:8090"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    networks:
    - webnet

networks:
  webnet  :
    driver: bridge
nginx docker-compose reverse-proxy
1个回答
0
投票

问题原来与在子文件夹中运行管理应用程序有关。这是在 Blazor Web assembly 应用程序中设置正确的应用程序路径的问题。反向代理没有问题。

© www.soinside.com 2019 - 2024. All rights reserved.