Для полноценной работы некоторых приложений требуется их публикация с использованием шифрования. Для этих целей, как нельзя кстати подходит самый популярный в мире Nginx. Вот простой пример конфигурации для публикации приложения:
/etc/nginx/sites-enabled/default:
server {
listen 80 default_server;
server_name <домен или ip или *>; # Замените на ваш домен, ip или *, либо используйте server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name <IP или HOST>; # Замените на ваш домен
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS13+AESGCM+SHA256:TLS13+CHACHA20:EECDH+AESGCM:EECDH+CHACHA20:EDH+AESGCM:EDH+CHACHA20:!aNULL:!MD5:!DSS';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; # Осторожно с preload!
access_log /var/log/nginx/<domain>.access.log;
error_log /var/log/nginx/<domain>.error.log;
location / {
proxy_pass http://127.0.0.1:<PORT>; # Замените на ваш порт
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; # Передаем реальный IP адрес клиента
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Передаем список прокси, через которые прошел запрос
proxy_set_header X-Forwarded-Proto $scheme; # Передаем протокол (http/https)
proxy_cache_bypass $http_upgrade;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
}
sudo nginx -t sudo systemctl reload nginx sudo systemctl restart nginx
Все запросы на 80 порт принудительно направляются на 443 порт и взаимодействуют с демоном приложения.