无法让 nginx 在 docker-compose 上下文中与 webpack-dev-server 一起工作
Can't get nginx working in a docker-compose context with webpack-dev-server
我正在玩 docker-compose
和 nginx
,我都是新手。我有一个前端容器和一个后端容器,我想使用 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
}
我正在玩 docker-compose
和 nginx
,我都是新手。我有一个前端容器和一个后端容器,我想使用 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
}