Nginx и Angular 404 на активах

#node.js #angular #docker #nginx

#node.js #angular #docker #nginx

Вопрос:

У меня есть приложение Angular 9, базовым href которого является «./». Nginx работает только в / route1 / route2 / Приложение отлично работает с nginx, я могу перейти на localhost: 8080 / route1 / route2, и угловые маршруты начнут работать должным образом. Проблема, которую я обнаружил, заключается в том, что активы не найдены. Итак, прямо сейчас компоненты загружены правильно, но без ресурсов.

папка активов находится под src/

Конфигурационный файл Nginx:

 worker_processes 4;

events { worker_connections 4096; }

http {
    server {
        listen 8080;
        root  /usr/share/nginx/html;
        include /etc/nginx/mime.types;

        location /route1/route2 {
            try_files $uri /app/index.html;
        }
    }
}
  

Dockerfile:

 ARG mode
### STAGE 1: Build ###

FROM node:alpine AS build

COPY package.json package-lock.json ./

RUN npm install amp;amp; mkdir /app-ui amp;amp; mv ./node_modules ./app-ui

WORKDIR /app-ui

COPY . .

RUN npm run ng build -- --deploy-url=/app/

### STAGE 2: Run ###

FROM nginx:alpine

# Copy the default nginx.conf provided by the proyect
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf

## Remove default nginx index page
RUN rm -rf /usr/share/nginx/html/*

COPY --from=build /app-ui/dist /usr/share/nginx/html
  

ОБНОВЛЕНИЕ!

Я обнаружил, что изображения находятся в / localhost: 8080/app/assets /… Проблема сейчас в том, что сервер пытается загрузить ресурсы из …8080 /route1 / route2 /assets…

Комментарии:

1. используете ли вы относительные пути при ссылке на /assets /? это должны быть абсолютные пути, начинающиеся с root. т.Е. <img src=»/assets/test.jpg «>

Ответ №1:

Проблема может быть в angular.json файле. Убедитесь, что вы включили src/assets в массив активов angular.json