docker - 将简单的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”-错误。
解决方案
经过一些严重的故障排除后,我结束了我的折磨。这个问题完全是愚蠢的。我为我的 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 服务器为我的前端提供服务的方法是非常糟糕的设计。请随时告诉我...
推荐阅读
- django - 如何确保在我的 Django 管理表单中显示一个额外的字段?
- flutter - 在堆栈中按基线对齐图标
- angular - 如何将模型分配给模型数组?
- excel - 为每一列创建唯一的工作簿
- android - 我们如何以编程方式在 Android Q OS 中实现可搜索的进度条?
- typescript - 提取泛型类型不返回输入类型
- android - 从表面视图camera2 api获取相机预览帧
- javascript - 如何检测使用javascript单击了哪个按钮?
- django - 将整个 django 应用程序限制为普通用户
- php - Laravel Scout - 创建时不添加关系