Проксирование через nginx

Тут рассмотрю варианты проксирования ресурсов http на localhost через https. На просто http выглядит также, только без установки сертификатов.

Вариант 1: У вас есть домен и мы делаем все через letsencrypt.

apt install certbot

certbot certonly --standalone -d yourdomain.com

Если нужна проверка через нс записи: 

certbot certonly --manual --preferred-challenges dns -d example.com

Если делаем через самописный сертификат:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

openssl dhparam -out /etc/nginx/dhparam.pem 2048

Теперь конфиг nginx. Представим, что ваш ресурс висит на  10056 порту и вам нужно https на 10057 (с самописным сертификатом)

server {

    listen 80;

    server_name 80.242.56.158

;

    location / {

        proxy_pass http://127.0.0.1:10056;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}

server {

    listen 10057 ssl;

    server_name 80.242.56.158;

    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;

    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    ssl_dhparam /etc/nginx/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;

    ssl_prefer_server_ciphers on;

    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM->    ssl_ecdh_curve secp384r1;

    ssl_session_timeout  10m;

    ssl_session_cache shared:SSL:10m;

    ssl_session_tickets off;

    ssl_stapling on;

    ssl_stapling_verify on;

    resolver 8.8.8.8 8.8.4.4 valid=300s;

    resolver_timeout 5s;

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

    add_header X-Frame-Options DENY;

    add_header X-Content-Type-Options nosniff;

    location / {

        proxy_pass http://127.0.0.1:10056;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}

Если делали через letsencrypt, то строка с ssl примерно такая:

  ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;

  ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

  ssl_protocols TLSv1.2 TLSv1.3;

  ssl_prefer_server_ciphers on;

Конфиг примерный все же. переделываем так, как нужно нам.

На обложке бразильская trash/death metall группа CRYPTA