Путь к узлу sockjs перезаписывается с помощью webpack-dev-server baseUrl - PullRequest
0 голосов
/ 31 января 2019

nginx.conf (предоставляется на порт 8900 в docker-compose)

upstream app_api {
    server api:8888;
}
upstream app_dashboard {
    server dashboard:8080;
}

server {

    listen 80;
    server_name api_server;
    index index.html;

    # Needed for Django API testing
    location /static {
        alias /var/www/static;
        try_files $uri /$uri /index.html;
    }

    #Django API
    location /api/ {
        proxy_pass http://app_api/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    # Dashboard static served from nginx
    location / {
        root /var/www/dist/;
        try_files $uri /$uri /index.html;
    }

    # Dashboard served from webpack-dev-server in container
    location /serve {
        proxy_pass http://app_dashboard;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
    # still testing - this will fix the HMR for webpack
    location /serve/sockjs-node {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;

        proxy_pass http://app_dashboard;

        proxy_redirect off;

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

}

vue.config.js

module.exports = {
  baseUrl: process.env.NODE_ENV === 'docker' ? '/serve' : '/'
}

В браузере перейдите на:

localhost: 8900 / serve

Страницы обслуживаются нормально, однако HMR webpack-dev-server не работает, так как вызовы кsockjs теперь /serve вместо /serve/sockjs-node:

POST http://localhost:8900/serve/908/3so2cyjm/xhr_streaming?t=1548885104223 404 (не найдено)

Я предполагаю, что это можно исправить с помощьюустановка devServer.proxy вместо baseUrl, однако я не смог найти правильную конфигурацию.

Что мне нужно: / -> должно перейти на http://localhost:8900/serve

/api -> должно перейти к http://localhost:8900/api

/sockjs-node -> должно перейти к http://localhost:8900/serve/sockjs-node

1 Ответ

0 голосов
/ 10 мая 2019

удалось решить эту проблему с помощью чего-то вроде:

devServer: {
    proxy: {
        "/serve": {
            target: "http://localhost:8900",
            pathRewrite: { "^/serve": "/sockjs-node" },
        },
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...