首页 > 解决方案 > 将简单的docker compose连接到nginx?

问题描述

我已经在这很长时间了,但我似乎无法解决这个问题。我真的被困住了……所以我求助于你们。

我正在尝试一些可能很简单的东西。我想使用 nginx 作为前端的反向代理。

码头工人组成

version: '3.7'

services:
  frontend:
    expose:
      - 9080
    build: "./"...""
    volumes:
      - ./"..."/build:/usr/src/kitschoen-rj/
  nginx:
    build: ./nginx
    volumes:
      - static_volume:/usr/src/"..."/staticfiles
    ports:
      - 8080:8080
    depends_on:
      - restapi

volumes:
  static_volume:

nginx.conf

upstream kitschoen_frontend {
    server frontend:9080;
}

server {

    listen 8080;

    location / {
        proxy_pass http://kitschoen_frontend;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

}

我根本想不通,为什么当我转到“localhost:8080”时会出现“Bad Gateway”-错误。

标签: dockernginx

解决方案


经过一些严重的故障排除后,我结束了我的折磨。这个问题完全是愚蠢的。我为我的 react 应用程序创建了一个多阶段构建,它还为 react 应用程序提供了一个 nginx 服务器(这确实减少了 react 的图像大小)。

但是 react nginx 服务器为 react 应用程序暴露了 80 端口,并相应地转发所有请求。

所以解决方案是将我的 nginx.conf 更改为

upstream kitschoen_frontend {
    server frontend:80;
}

server {

    listen 8080;

    location / {
        proxy_pass http://kitschoen_frontend;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

}

多么可怕的一天! 如果您到目前为止阅读了这篇文章,并且您认为通过单独的 nginx 服务器为我的前端提供服务的方法是非常糟糕的设计。请随时告诉我...


推荐阅读