У меня есть такая структура проекта:
âââ docker-compose.dev.yml
âââ docker-compose.prod.yml
âââ docker-compose.yml
âââ homeid
✓ ✓ Dockerfile
â âââ nginx.conf
🔸 сайт
âââ обратный прокси-сервер
✓ ✓ Dockerfile
✓ ✓ dev.homebooker.conf
✓ ✔️homebooker.conf
â âââ nginx.conf
и у меня есть домен homebooker.fr
и субдомен dev.homebooker.fr
, и я хочу добавить https
, поэтому я получил сертификат от letsencrypt
и я замутил его в контейнер Nginx, но https не работает, не знаю, что я делаю неправильно.
Вот содержимое файлов:
докер-compose.yml
версия: '3'
Сервисы:
обратный_прокси:
строить:
контекст: ./обратный прокси
докерфайл: Докерфайл
имя_контейнера: обратный_прокси
перезапуск: всегда
тома:
- ~/letsencrypt:/etc/letsencrypt
сети:
- dev_network
- prod_network
порты:
- "80:80"
- "433:433"
сети:
dev_network:
prod_network:
докер-compose.dev.yml
версия: '3'
Сервисы:
homeid_dev:
строить:
контекст: ./homeid
докерфайл: Докерфайл
имя_контейнера: homeid_dev
перезапуск: всегда
сети:
- dev_network
порты:
- '8001:80'
сети:
dev_network:
докер-compose.prod.yml
версия: '3'
Сервисы:
homeid_prod:
строить:
контекст: ./homeid
докерфайл: Докерфайл
имя_контейнера: homeid_prod
перезапуск: всегда
сети:
- prod_network
порты:
- "8002:80"
сети:
prod_network:
Докерфайл с домашним идентификатором:
ОТ nginx: 1.21.6-alpine
ЗАПУСТИТЬ apk --update --обновление без кеша
RUN apk добавить python3 python3-dev py3-pip build-base libressl-dev musl-dev libffi-dev rust cargo
RUN pip3 установить pip --upgrade
RUN pip3 установить certbot-nginx
ЗАПУСК mkdir /etc/letsencrypt
РАБОЧИЙ КАТАЛОГ /usr/share/nginx/html
скопируйте nginx.conf /etc/nginx/conf.d/default.conf
КОПИРОВАТЬ ./веб-сайт package.json package-lock.json ./
ЗАПУСТИТЬ установку npm
Dockerfile обратного прокси:
ОТ nginx: 1.21.6-alpine
ЗАПУСТИТЬ apk --update --обновление без кеша
RUN apk добавить python3 python3-dev py3-pip build-base libressl-dev musl-dev libffi-dev rust cargo
RUN pip3 установить pip --upgrade
ЗАПУСК pip3 установить certbot-nginx
ЗАПУСК mkdir /etc/letsencrypt
скопируйте nginx.conf /etc/nginx/nginx.conf
РАБОЧИЙ КАТАЛОГ /etc/nginx/sites-доступен
КОПИРОВАТЬ homebooker.conf /etc/nginx/sites-available/homebooker.fr.conf
РАБОЧИЙ КАТАЛОГ /etc/nginx/sites-доступен
КОПИРОВАТЬ dev.homebooker.conf /etc/nginx/sites-available/dev.homebooker.fr.conf
РАБОЧИЙ КАТАЛОГ /etc/nginx/sites-enabled
RUN ln -s /etc/nginx/sites-available/homebooker.fr.conf . \
&& ln -s /etc/nginx/sites-available/dev.homebooker.fr.conf .
dev.homebooker.fr.conf
сервер {
слушать 80;
слушать [::]:80;
имя_сервера dev.homebooker.fr www.dev.homebooker.fr;
местоположение = /статус {
доступ_лог выключен;
default_type текстовый/обычный;
add_header Content-Type text/plain;
вернуть 200 «живых»;
}
место расположения / {
proxy_pass http://homeid_dev;
}
error_page 500 502 503 504 /50x.html;
местоположение = /50x.html {
корень /usr/share/nginx/html;
}
}
homebooker.fr.conf
сервер {
слушать 80 ;
слушать [::]:80 ;
имя_сервера homebooker.fr www.homebooker.fr;
вернуть 301 https://homebooker.fr;
}
сервер {
слушать 443 ssl;
имя_сервера homebooker.fr www.homebooker.fr;
# сертификат РСА
ssl_certificate /etc/letsencrypt/live/homebooker.fr/fullchain.pem; # под управлением Certbot
ssl_certificate_key /etc/letsencrypt/live/homebooker.fr/privkey.pem; # под управлением Certbot
включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
местоположение = /статус {
доступ_лог выключен;
default_type текстовый/обычный;
add_header Content-Type text/plain;
вернуть 200 «живых»;
}
место расположения / {
proxy_pass http://homeid_prod/;
}
error_page 500 502 503 504 /50x.html;
местоположение = /50x.html {
корень /usr/share/nginx/html;
}
}
обратный прокси/nginx.conf
пользователь nginx;
рабочие_процессы авто;
error_log /var/log/nginx/error.log уведомление;
pid /var/run/nginx.pid;
События {
worker_connections 1024;
}
http {
включить /etc/nginx/sites-enabled/*;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$статус $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
журнал_доступа /var/log/nginx/access.log основной;
отправить файл включен;
#tcp_npush включен;
keepalive_timeout 65;
#gzip включен;
включить /etc/nginx/conf.d/*.conf;
}
homeid/nginx.conf
сервер {
слушать 80;
слушать [::]:80;
#access_log /var/log/nginx/host.access.log main;
место расположения / {
корень /usr/share/nginx/html;
индекс index.html index.htm;
}
#error_page 404 /404.html;
# перенаправить страницы ошибок сервера на статическую страницу /50x.html
#
error_page 500 502 503 504 /50x.html;
местоположение = /50x.html {
корень /usr/share/nginx/html;
}
}