Как настроить angular и vuejs докерские приложения с NGINX - PullRequest
0 голосов
/ 02 апреля 2020

Мне сложно настроить второе приложение для запуска. Моя клиентская сторона работает отлично, но я не могу запустить приложение администратора, созданное с помощью vuejs.

У меня есть конфигурация nginx, обслуживающая мое клиентское приложение, и вторая конфигурация nginx, обслуживающая мое приложение администратора. Как я могу настроить приложение администратора для указания на администратора? Когда я пытаюсь получить к нему доступ, оно перенаправляет меня на http://admin: 8000 / admin / вместо localhost: 8000

admin
FROM node:alpine as develop-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .

# build stage
FROM develop-stage as build-stage
RUN npm run build

# production stage
FROM nginx
EXPOSE 8000
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
RUN mkdir -p /admin/html
COPY --from=build-stage /app/dist /admin/html

server {
    listen 8000;

    location / {
        root /admin/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}

Main Nginx config

upstream client {
    server client:3000;
}

upstream admin {
    server admin:8000;
}


server {
    listen 80;

    location / {
        proxy_pass http://client;
    }

    location /admin {
        rewrite /admin/(.*) /$1 break;
        proxy_pass http://admin;
    }

}

1 Ответ

0 голосов
/ 03 апреля 2020

NGinx применить приоритет к конфигурации, означает, что ваш "/" работает как подстановочный знак, ничего после "location /" не будет достигнуто.

Попробуйте это

upstream client {
    server client:3000;
}

upstream admin {
    server admin:8000;
}


server {
    listen 80;

    location /admin { # <-- this first
        rewrite /admin/(.*) /$1 break;
        proxy_pass http://admin;
    }

    location / { # <-- always at the end, behave as wilcard
        proxy_pass http://client;
    }
}
...