Настройка https на nginx?
Достаточно следующего:server {
    listen              443 ssl http2;
    server_name         домен_здесь;
    ssl_certificate     /путь/к/сертификату;
    ssl_certificate_key /путь/к/ключу;

    тут ваш location {}
}
Если переадресовывать с HTTP на HTTPS то выше добавляете:server {
    listen      80;
    server_name домен_здесь;
    return      301 https://$server_name$request_uri;
}
Также рекомендую посмотреть https://mozilla.github.io/server-side-tls/ssl-conf... - он в зависимости от версии Nginx и OpenSSL, а так же ваших предпочтений позволяет подобрать актуальные шифры чтобы поддерживать максимально возможный уровень безопасности.
Я себе в /etc/nginx/conf.d/tls.conf положил достаточно строгие настройки без старых протоколов и слабых шифров, которые максимально безопасны, но работают лишь в актуальных версиях браузеров (IE9-10, древние Firefox, Chrome и Safari могут не работать совсем):ssl_session_timeout       1d;
ssl_session_cache         shared:SSL:50m;
ssl_session_tickets       off;

ssl_dhparam               /etc/ssl/dhparam.pem;

ssl_protocols             TLSv1.2;
ssl_ciphers               ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;

add_header                Strict-Transport-Security "max-age=31536000;";

ssl_stapling              on;
ssl_stapling_verify       on;
Это достаточно минималистичный конфиг без мишуры и без правок родных конфигурационных файлов Nginx (упрощает обновление). dhparam.pem вам придется сгенерировать, рекомендую 4096bit, как - найти очень легко.
Указанных опций более чем достаточно, просто поищите что каждая из опций значит и подкорректируйте по вкусу.
> их бесплатно сделать
letsencrypt
https://serversforhackers.com/series/ssl-certificates
https://serversforhackers.com/video/letsencrypt-fo...