8.4 Получение SSL-сертификата от Let's Encrypt и настройка HTTPS
0 из 2 шагов пройдено

Настройка HTTPS

Сначала остановим и удалим контейнеры:

docker compose -f docker-compose.prod.yml down


Затем перейдём в директорию nginx и отредактируем его конфиг:

cd nginx
vi fastapi_ecommerce.conf


Изменим его содержимое на следующее:

upstream fastapi_ecommerce {
    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://fastapi_ecommerce;
    }

}


Примечание: обязательно замените строку ваше_доменное_имя в server_name, в ssl_certificate и в ssl_certificate_key, на имя вашего домена!


Зафиксируем изменения в репозитории:

git commit -am "Add HTTPS support to fastapi_ecommerce.conf"


Перейдём в директорию проекта, пересоберём образы:

cd ..
docker compose -f docker-compose.prod.yml build


Создадим и запустим контейнеры:

docker compose -f docker-compose.prod.yml up -d


Проверим результат, перейдём по адресу http://ваше_доменное_имя, должен произойти редирект на https://ваше_доменное_имя:

В браузерном отладчике(кнопка F12) видно как произошёл редирект(301).


Теперь сайт работает через HTTPS, с использованием протокола HTTP/2 и с GZIP сжатием контента:


Добавление поддержки HTTPS было успешно выполнено.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Нет обсуждений. Начните первое.