【问题标题】:NginX in docker 2nd domain return 502 bad gatewaydocker 2nd 域中的 NginX 返回 502 bad gateway
【发布时间】:2022-02-20 17:17:42
【问题描述】:

我有 2 个域指向一个虚拟专用服务器 ubuntu 21。第一个域(在端口 3000 上运行)按预期工作,第二个域(在容器上的端口 4000 和主机上的 5000 上运行)没有并返回 nginx 502错误的网关。我在 nginx 容器上添加了端口 4000 指向 80:

我的配置如下:

docker-compose.yml:

version: '3'
services:
  nginx:
    image: nginx:stable-alpine
    ports:
      - "3000:80" # nginx listen on 80
      - "4000:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

  pwm-node:
    build: .
    image: my_acc/pwm-node
    environment:
      - PORT=3000
    depends_on:
      - mongo

  mongo:
    image: mongo
    volumes:
      - mongo-db:/data/db

  redis:
    image: redis
volumes:
  mongo-db:

nginx 配置:

server {
    listen 80;
    server_name first_domain.com www.first_domain.com;

    # Redirect http to https
    location / {
        return 301 https://first_domain.com$request_uri;
    }
}

server {
        listen 80;
        server_name second_domain.com www.second_domain.com;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://localhost:4000;
        proxy_redirect off;
    }
}

server {
    listen 443 ssl http2;
    server_name first_domain.com www.first_domain.com;

    ssl on;
    server_tokens off;
    ssl_certificate /etc/nginx/ssl/live/first_domain.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/live/first_domain.com/privkey.pem;
    ssl_dhparam /etc/nginx/dhparam/dhparam-2048.pem;

    ssl_buffer_size 8k;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://pwm-node:3000;
        proxy_redirect off;
    }
}

【问题讨论】:

    标签: docker nginx


    【解决方案1】:

    看起来 nginx 不接受 http://localhost:4000;。我可能必须将 node-app-4000 作为服务添加到 docker-compose.yml 并将 localhost 替换为 node-app-4000

    【讨论】:

    • 您是否尝试在 Grafana 上建立连接?如果是,则尝试使用“host.docker.internal:5000”来查看是否会建立连接。请让我知道结果
    • 不!我只想将 2 个域添加到 1 个 ip。上面的答案有效 2 个域现在正在提供自己的内容。然而奇怪的是,现在负责的 2 个 nodejs 应用程序都可以通过端口 3000 和 4000 访问,而当 docker ps 时它只显示 4000?
    猜你喜欢
    • 2021-09-11
    • 2021-02-24
    • 2020-11-12
    • 2020-05-09
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2017-04-18
    相关资源
    最近更新 更多