как всегда спасибо за советы и рекомендации.
У меня есть угловое приложение, которое я хочу развернуть с помощью Nginx. Я использую certbot для создания сертификатов, и это прекрасно работает. Это означает, что я могу получить доступ к своему домену. Но домен выдает ошибку, так как не находит все рабочие файлы. Вот мой угловой докер-файл:
#stage 1
FROM node:10.16.0 as node
WORKDIR /app
COPY . /app/
RUN npm install
ARG configuration=production
RUN npm run build -- --prod --configuration=$configuration
#stage 2
FROM nginx:alpine
COPY --from=node /app/dist/angular-SPA /usr/share/nginx/html
COPY ./nginx-config.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Это мой nginx-config.conf:
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
}
и у меня есть папка с docker-compose.yml и nginx.conf. Я не уверен, хорошая ли это практика или нет. Но вот как разработчик до меня это сделал.
В папке nginx это docker-compose.yml
web:
image: nginx
volumes:
- ./:/usr/share/nginx/html
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
- /etc/letsencrypt:/root/letsencrypt
ports:
- "80:80"
- "443:443"
command: /bin/bash -c "nginx -g 'daemon off;'"
и это конфиг nginx для nginx.
server {
listen 80;
server_name example.com;
location ^~ /.well-known/acme-challenge/ {
allow all;
#default_type "text/plain";
}
location / {
return 301 https://example.com;
}
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /root/letsencrypt/live/example.com-0001/fullchain.pem;
ssl_certificate_key /root/letsencrypt/live/example-0001/privkey.pem;
location ^~ /.well-known/acme-challenge/ {
allow all;
default_type "text/plain";
}
location = / {
proxy_pass http://PRIVATE_IP_OF_AWS_INSTANCE:9090/index.html;
}
}
PRIVATE_IP_OF_AWS_INSTANCE - это частный ip моего экземпляра AWS EC2.
Мой угловой контейнер работает на порту 9090: 80.
Это ошибка, которую я получаю, когда пытаюсь получить доступ к example.com:
.
example.com /: 15 GET https://example.com/runtime-es2015.858f8dd898b75fe86926.js net :: ERR_ABORTED 404 (не найдено)
example.com/:12 GET https://example.com/styles.45c31720860b353d5204.css net :: ERR_ABORTED 404 (не найдено)
example.com/:15 GET https://example.com/polyfills-es2015.5728f680576ca47e99fe.js net :: ERR_ABORTED 404 (не найдено)
favicon.ico: 1 GET https://example.com/favicon.ico 404 (не найдено)
Пожалуйста, помогите, любые советы или советы приветствуются.