Не удается получить доступ к странице по URL в приложении Nuxt с прокси Nginx - PullRequest
0 голосов
/ 13 января 2019

Краткое изложение проблемы

Я пытаюсь настроить приложение, которое использует три основных сервиса:

  1. Веб-приложение Nuxt
  2. A Rails API
  3. Прокси-сервер 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 / логин /

Спасибо

Заранее спасибо всем и каждому, кто пытается помочь мне с этим!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...