Краткое изложение проблемы
Я пытаюсь настроить приложение, которое использует три основных сервиса:
- Веб-приложение Nuxt
- A Rails API
- Прокси-сервер Nginx, который передает запросы API и приложению.
В службе веб-приложений Nuxt я на самом деле использую отдельный экземпляр Nginx, который отвечает за передачу сгенерированных файлов Nuxt службе обратного прокси-сервера Nginx по запросу.
Я столкнулся с проблемой, когда приложение Nuxt не разрешает доступ к веб-страницам при жестком наборе URL-адреса. Поэтому, если я захожу на localhost: 5000, приложение Nuxt работает нормально и обслуживает страницу указателя, но если я захожу на localhost: 5000 / login, приложение перестает работать.
Это происходит только при переходе на страницу путем жесткого ввода URL-адреса. Если я щелкну ссылку для страницы входа в приложение после того, как уже открою страницу индекса в localhost: 5000, она прекрасно загрузит страницу входа.
Вот часть кода:
Docker Compose
# docker-compose.yaml
version: '3'
services:
db:
image: postgres
volumes:
- .tmp/db:/var/lib/postgresql/data
ports:
- '5432'
proxy:
build: proxy
restart: always
ports:
- '5000:80'
api:
build: api
volumes:
- ./api:/app
depends_on:
- db
view:
build: view
volumes:
- /app/node_modules
- ./view:/app
Procker Service Dockerfile
# proxy/Dockerfile
FROM nginx:1.15.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
Proxy Service Default.conf
# proxy/default.conf
upstream view {
server view:3000;
}
upstream api {
server api:4000;
}
server {
listen 80;
location / {
proxy_pass http://view;
}
location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://api;
}
}
Dockerfile для приложения Nuxt
# view/Dockerfile
FROM node:11.6.0-alpine as builder
WORKDIR '/app'
COPY package*.json ./
RUN npm install
COPY . ./
RUN npm run generate
FROM nginx:1.15.8-alpine
EXPOSE 3000
COPY --from=builder /app/dist usr/share/nginx/html
COPY ./.nginx/default.conf etc/nginx/conf.d/default.conf
Приложение Nuxt Nginx Default.conf
# view/.nginx/default.conf
server {
listen 3000;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
Подробнее, что может помочь
Когда я пытаюсь зайти на определенную страницу в приложении Nuxt по URL-адресу, например localhost: 5000 / login, Safari пытается перенаправить меня на имя сервера, которое я определил в восходящем блоке из прокси-службы default.conf страница, как показано выше.
Итак localhost: 5000 / логин будет перенаправлен на просмотр: 3000 / логин /
Спасибо
Заранее спасибо всем и каждому, кто пытается помочь мне с этим!