无法让 nginx 在 docker-compose 上下文中与 webpack-dev-server 一起工作

Can't get nginx working in a docker-compose context with webpack-dev-server

我正在玩 docker-composenginx,我都是新手。我有一个前端容器和一个后端容器,我想使用 nginx 来代理两个应用程序之间的请求。所以,我设置了一个最小的 Dockerfile,

FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80 443

和最小的 default.conf,

upstream fibclient {
  server fibclient:9000;
}

upstream fibserver {
  server fibserver:8080;
}

server {
  listen 80;

  location / {
    proxy_pass http://fibclient;
  }

  location /api {
    rewrite /api/(.*) / break;
    proxy_pass http://fibserver;
  }
}

nginx 放入我的 docker-compose 文件中,这里是一个片段:

version: '3'
services:
  ...
nginx:
  restart: always
  build:
    dockerfile: Dockerfile.dev
    context: ./nginx
  ports:
    - '8000:80'
  depends_on:
    - fibclient
    - fibserver
fibserver:
  ...
fibclient:
  ...

好吧,正如我在 default.conf 中指出的那样,我原本希望 nginx 将请求代理到两个应用程序,但我在尝试获取 [=23] 时收到 Invalid host header 错误=].我阅读了几篇文章和资源来解决这个问题,但现在运气不好。我错过了什么?

更新: 会不会是 webpack 的问题?也许 webpack-dev-server(版本 ^3.11.0)无法解决来自 nginx 实例的请求?这是我的 webpack.config.js 文件:

const path = require('path');
module.exports = {
  entry: './src/index.js',
  module: {
    rules: [{
      test: /\.js$/,
      exclude: /\/node_modules\//,
      use: {
        loader: 'babel-loader'
      }
    }]
  },
  output: {
    filename: 'index.js',
    path: path.resolve(__dirname, 'bin'),
  },
  devServer: {
    contentBase: path.join(__dirname, 'bin'),
    compress: true,
    port: 9000,
    host: '0.0.0.0'
  }
};

我只是这样启动的:"start": "webpack-dev-server"

哦,如果你想看完整的东西,你可以找到它here,谢谢。

应将 server_name 添加到 :

server {
  listen 80;
  server_name localhost;

我终于可以再次动手了。事实证明,这不是我如何配置 nginx 的问题,而是容器化的 webpack-dev-server,只需在我的 webpack.config.js 中添加 host: '0.0.0.0', disableHostCheck: true 参数即可。这是相关部分:

devServer: {
  contentBase: path.join(__dirname, 'bin'),
  compress: true,
  port: 9000,
  host: '0.0.0.0',
  disableHostCheck: true
}