Настройка HTTPS
Сначала перейдём в директорию проекта, остановим и удалим контейнеры:
cd ../../..
docker compose -f docker-compose.prod.yml down
Затем перейдём в директорию nginx и отредактируем его конфиг:
cd nginx
vi htmx_book.conf
Изменим его содержимое на следующее:
upstream htmx_book {
# Список бэкэнд серверов для проксирования
server web:8000;
}
server {
listen 80;
server_name ваше_доменное_имя;
location / {
return 301 https://$host$request_uri;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
server {
listen 443 ssl http2;
server_name ваше_доменное_имя;
ssl_certificate /etc/letsencrypt/live/ваше_доменное_имя/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваше_доменное_имя/privkey.pem;
client_max_body_size 20M;
charset utf-8;
gzip on;
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
location / {
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Url-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://htmx_book;
}
# подключаем статические файлы
location /static/ {
alias /home/app/web/static/;
}
# подключаем медиа файлы
location /media/ {
alias /home/app/web/media/;
}
}
Примечание: обязательно замените строку ваше_доменное_имя в server_name, в ssl_certificate и в ssl_certificate_key, на имя вашего домена!
Переходим в директорию проекта, пересобираем образы, создаём и запускаем контейнеры:
cd ..
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d
Проверяем результат, переходим по адресу http://ваше_доменное_имя, должен произойти редирект на https://ваше_доменное_имя:
Теперь сайт работает через HTTPS, с использованием протокола HTTP/2 и с GZIP сжатием контента:
Добавление поддержки HTTPS было успешно выполнено.