Nginx具有多个docker组合错误111

Nginx具有多个docker组合错误111,docker,nginx,docker-compose,Docker,Nginx,Docker Compose,我正在尝试使用Nginx作为反向代理来部署具有多个docker compose文件的服务。 我的文件夹结构是: 我的档案是: Apple docker-compose.yaml: version: "3.5" services: apples: build: context: ./ dockerfile: Dockerfile networks: reverseproxy_santo-dio: al

我正在尝试使用Nginx作为反向代理来部署具有多个docker compose文件的服务。 我的文件夹结构是:

我的档案是:

Apple docker-compose.yaml:

version: "3.5"

services:
  apples:
    build:
      context: ./
      dockerfile: Dockerfile

    networks:
      reverseproxy_santo-dio:
        aliases:
          # ApplesApp hostname on "fruit-network"
          - apples_net

networks:
  reverseproxy_santo-dio:
    external: true
苹果码头工人:

FROM httpd:2.4
RUN echo "<html><body><h1>A</h1>App A works!</body></html>" > /usr/local/apache2/htdocs/index.html
橙色码头工人:

FROM httpd:2.4
RUN echo "<html><body><h1>B</h1>App B works!</body></html>" > /usr/local/apache2/htdocs/index.html 
其中nginx.conf:

server {
  # Redirect http:// to https://
    listen 80; # default_server;
    listen [::]:80;
    error_log  /var/log/nginx/mylog.error_log  debug;
    
     
    #frontend 
    location / {
        proxy_pass http://apples_net;
    }

    #backend
    location /api/ {
        proxy_pass http://orange_net:8080/api;
    }
  
}
要部署我启动的服务,请执行以下操作:

  • 反向代理
  • 苹果
  • 橙色的
  • 当我进入浏览器时,apple(localhost)可以正常工作,但orange(localhost/api)会用502坏网关回答我。 在我的日志文件中:

    2021/05/04 11:07:23[错误]32#32:*4 connect()失败(111: 连接被拒绝)连接到上游时,客户端: xxx.xxx.xx.x,服务器:,请求:“GET/api/HTTP/1.1”,上游:http://xxx.xxx.xxx.x:8080/api,主机:“本地主机”

    我的错误在哪里? 我从这个项目开始:


    谢谢,我找到了解决办法。我对nginx.conf有问题。我不明白为什么

    location /api/ {
            proxy_pass http://orange_net:8080/api;
        }
    
    只有耐心才行。这个设置非常适合我的目的

    反向代理:

    #/reverse-proxy/docker-compose.yaml
    version: '3.5'
    services:
      nginx: 
        image: nginx:latest
        container_name: reverse-proxy
        volumes:
          - ./nginx.conf:/etc/nginx/conf.d/default.conf
          - ./log/:/var/log/nginx
        ports:
          - 80:80
          - 443:443
        networks:
          - santo-dio
        restart: always
    
    
    networks:
      santo-dio:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 10.10.10.0/16
    
    --

    苹果:

    #/apples/docker-compose.yaml
    #/apples/Dockerfile
    version: "3.5"
    
    services:
      apples:
        build:
          context: ./
          dockerfile: Dockerfile
        networks:
          reverseproxy_santo-dio:
            ipv4_address: 10.10.10.2
            aliases:
              - apples_net
    
    networks:
      reverseproxy_santo-dio:
        external: true
    
    橙子:

    #/oranges/docker-compose.yaml
    #/oranges/Dockerfiles
    version: "3.5"
    services:
      orange:
        build:
          context: ./
          dockerfile: Dockerfile
        # expose:
        #   - 8081
        networks:
         reverseproxy_santo-dio:
            ipv4_address: 10.10.10.1
            aliases:
              - orange_net
          
    
    networks:
      reverseproxy_santo-dio:
        external: true
    

    在这个版本中,我映射了我的应用程序的IP地址。但是可以跳过这一步,只使用别名

    You
    proxy\u passhttp://orange_net:8080
    ;“orange”容器正在侦听该端口,还是默认的HTTP端口80?我认为它使用端口80,因为在网络中它有“orange_net”作为别名。但是如果我使用“”我会得到同样糟糕的响应。
    #/reverse-proxy/nginx.conf
    server {
      server_name apples_net.com;
      #resolver 127.0.0.11 valid=5s; # Local Docker DNS
       error_log  /var/log/nginx/apples_net.error_log  debug;
    
      location / {
        auth_request off;
        #proxy_pass http://apples_net:80;
        proxy_pass http://10.10.10.2:80;
      }
    }
    
    server {
      server_name orange_net.com;
      #resolver 127.0.0.11 valid=5s; # Local Docker DNS
       error_log  /var/log/nginx/orange_net.error_log  debug;
    
      location / {
        auth_request off;
        #proxy_pass http://orange_net:80;
        proxy_pass http://10.10.10.1:80;
        
      }
    }
    
    #/apples/docker-compose.yaml
    #/apples/Dockerfile
    version: "3.5"
    
    services:
      apples:
        build:
          context: ./
          dockerfile: Dockerfile
        networks:
          reverseproxy_santo-dio:
            ipv4_address: 10.10.10.2
            aliases:
              - apples_net
    
    networks:
      reverseproxy_santo-dio:
        external: true
    
    #/oranges/docker-compose.yaml
    #/oranges/Dockerfiles
    version: "3.5"
    services:
      orange:
        build:
          context: ./
          dockerfile: Dockerfile
        # expose:
        #   - 8081
        networks:
         reverseproxy_santo-dio:
            ipv4_address: 10.10.10.1
            aliases:
              - orange_net
          
    
    networks:
      reverseproxy_santo-dio:
        external: true