Webpack Devserver с Nginx и Docker: опрос информации по неправильному адресу - PullRequest
0 голосов
/ 11 октября 2019

У меня есть 2 контейнера в Docker :

Nginxправильно прокси-запросы к контейнеру узла, и я могу получить доступ к приложению узла на http://localhost:8080,, но по некоторым причинам есть другие запросы опроса типа http://localhost:3000/sockjs-node/info?t=1570780621084, которые не выполняются (net :: ERR_CONNECTION_REFUSED), потому что нана хосте только Nginx на порту 8080 виден. Я думаю, что эти запросы на опрос должны быть направлены на Nginx (http://localhost:8080/sockjs-node/info?t=1570780621084), но я не знаю, что мне нужно изменить в конфигурации devserver Webpack, чтобы это исправить.

Это devserver веб-пакетаконфигурация:

const path = require("path");
const webpack = require("webpack");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const {
    BUILD_DIR,        
} = require("./config/config");

module.exports = {
    entry: {
        bundle: [
            "@babel/polyfill", 
            "./src/app.js",
        ]
    },

    output: {
        path: BUILD_DIR,
        filename: "[name].[hash].js"
    },

    devtool: "inline-source-map",

    devServer: {
        host: "localhost",
        port: 3000,        
        contentBase: BUILD_DIR,
        historyApiFallback: false,
        hot: true,
        inline: true,
        watchOptions: {
            poll: true
        },
        disableHostCheck: true,
    },

    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader"
                }
            },
            {
                test: /\.css$/,
                use: ["style-loader", "css-loader"],
            },
            {
                test: /\.scss$/,
                use: ["style-loader", "css-loader", "sass-loader"]
            }
        ],
    },

    plugins: [
        new CleanWebpackPlugin(),

        new HtmlWebpackPlugin({
            template: "src/index.html",
            filename: "index.html",
            inject: true
        }),
    ]
};

Это конфигурация Nginx:

upstream reactclient {
    server react-client:3000 fail_timeout=20s max_fails=10;
}

server {
    listen 80;

    location / {
        proxy_pass http://reactclient;
    }   

    location /sockjs-node/ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;

        proxy_pass http://reactclient;
        proxy_redirect off;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";  
    }
}

Пока я пытался добавить следующее в запись конфигурации devserver, но id didn 't работа.

entry: {
        bundle: [
            `webpack-dev-server/client?http://localhost:8080`,
            "webpack/hot/dev-server",
            "@babel/polyfill", 
            "./src/app.js",
        ]
    },

Как мне заставить девелопер Webpack работать правильно с Nginx в Docker?

...