Proxy the Proxmox Web GUI with Nginx Over HTTPS - Настройка

Материал из support.qbpro.ru
  • Пример настройки nginx для Proxmox:
    • Для начала устанавливаем необходимые пакеты:
apt install nginx apache2-utils certbot python3-certbot python3-certbot-nginx letsencrypt
    • Далее удаляем default на nginx:
rm /etc/nginx/sites-enable/default
    • Генерируем пароль для предварительной авторизации (защита от ботов и скрытие консоли Proxmox)
mkdir -p /etc/nginx/auth
touch /etc/nginx/auth/.htpasswd|:>/etc/nginx/auth/.htpasswd;
htpasswd -p -b /etc/nginx/auth/.htpasswd MYLOGIN  $(openssl passwd -1 -noverify MYPASS);
    • Создаем директорию конфигураций сайтов для ssl
mkdir -p  mkdir -p /etc/nginx/ssl
    • Создаем там файл ssl_pve-mydomain-ru.conf содержимым:
ssl_certificate                 /etc/letsencrypt/live/pve.mydomain.ru/cert.pem;
ssl_certificate_key             /etc/letsencrypt/live/pve.mydomain.ru/privkey.pem;
ssl_trusted_certificate         /etc/letsencrypt/live/pve.mydomain.ru/fullchain.pem;
    • Для генерации сертификата используем certbot или autocertbot
    • Наконец финальная версия конфигурации для входа на Proxmox:
upstream proxmox {
    server 127.0.0.1:8006;
}

server {
    listen 80 default_server;
    rewrite ^(.*) https://$host$1:443 permanent;
}

server {
    listen 443 http2;
    server_name proxmox.mydomain.ru;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/auth/.htpasswd;
    include     /etc/nginx/ssl/ssl_pve-mydomain-ru.conf;
    add_header Strict-Transport-Security max-age=15768000;
    ssl on;
    proxy_redirect off;
    location / {
        proxy_pass https://proxmox;
        proxy_buffering off;
        proxy_buffer_size 4k;
        client_max_body_size 5g;
        proxy_connect_timeout 300s;
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
        send_timeout 300s;

        # Enable proxy websockets for the noVNC console to work
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # Standard proxying headers
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     
        # SSL proxying headers
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Ssl on;
    }
}
    • Генерируем сертификаты, перезапускаем nginx.
    • Теперь порт 8006 - можно закрыть совсем.
  • ИСТОЧНИКИ: