Docker Compose NGINX 反向代理 502

我有以下设置,我一生都无法弄清楚为什么我无法连接到 api。


nginx.conf


worker_processes auto;

worker_rlimit_nofile 200000;


events {

  use epoll;

  accept_mutex on;

  multi_accept on;

  worker_connections 1024;

}


http {

  error_log /etc/nginx/error_log.log warn;

  client_max_body_size 20m;


  server {

    listen 80;

    listen [::]:80;


    location / {

      proxy_pass http://api:8080/;

    }


    location /health {

      return 200;

      access_log off;

    }

  }

}

码头工人-compose.yml


version: "3.7"


services:

  nginx:

    container_name: nginx

    image: "nginx:latest"

    ports:

      - "8000:80"

    networks:

      - internal_net

    volumes:

      - ./container/nginx.conf:/etc/nginx/nginx.conf


  api:

    container_name: api

    build:

      context: .

      dockerfile: container/Dockerfile

    expose:

      - "8080"

    networks:

      - internal_net

    depends_on:

      - postgres

    command: ["./wait-for-it.sh", "postgres:5432", "--timeout=60", "--", "./52-server-go"]


  postgres:

    container_name: postgres

    image: "postgres:9.5-alpine"

    expose:

      - "5432"

    networks:

      - internal_net


networks:

  internal_net:

    driver: bridge


volumes:

  container:

我的 api 设置为在端口 8080 上运行,当我进入容器并针对该地址运行 curl 请求时,它可以工作。根据 compose 文件,它应该将该地址暴露给由包括 nginx 在内的所有服务共享的本地 compose 网络。


根据 nginx 配置,它应该将每个请求(除了/health检查,它有效)传递给api服务。相反,返回的是来自 nginx 的 502。


我哪里混了?我做错什么了?


慕斯709654
浏览 200回答 1
1回答

米琪卡哇伊

问题实际上出在我的 go 应用程序中。使用 golang gorilla/mux,必须更改地址:原件(破损)    // Start server    address := "127.0.0.1:8080"    srv := &http.Server{        Handler:      r,        Addr:         address,        WriteTimeout: 15 * time.Second,        ReadTimeout:  15 * time.Second,    }使固定    // Start server    address := "0.0.0.0:8080"    srv := &http.Server{        Handler:      r,        Addr:         address,        WriteTimeout: 15 * time.Second,        ReadTimeout:  15 * time.Second,    }我不知道为什么,但这解决了它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go