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