3x-ui3x-ui
Эксплуатация

Обратный прокси

Разместите панель 3x-ui и подписку за Nginx или Caddy с TLS от Let's Encrypt.

Обратный прокси позволяет отдавать панель и подписку на аккуратном домене с автоматическим HTTPS и скрывать реальные порты за портами 80/443. Хотите, чтобы панель завершала TLS напрямую? Тогда получите сертификат через меню SSL x-ui.

Сгенерировать конфигурацию

Reverse-proxy config generator

Generate an Nginx or Caddy reverse-proxy config (with WebSocket support) and a matching certificate command.

nginx server block
server {
    listen 443 ssl http2;
    server_name panel.example.com;

    ssl_certificate     /etc/letsencrypt/live/panel.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/panel.example.com/privkey.pem;

    location /panel/ {
        proxy_pass http://127.0.0.1:2053;
        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;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}
Obtain a certificate
certbot certonly --nginx -d panel.example.com

Панель использует WebSockets для обновлений в реальном времени, поэтому прокси должен передавать заголовки Upgrade/Connection (приведённая выше конфигурация Nginx уже это делает). Caddy обрабатывает обновления WebSocket автоматически.

Nginx + сертификат

С Nginx получите сертификат с помощью certbot (или acme.sh) и укажите его в блоке server:

certbot
certbot certonly --nginx -d panel.example.com

Перезагрузите Nginx после установки сертификата и настройте автоматическое продление (certbot renew по умолчанию запускается по таймеру).

Caddy

Caddy получает и продлевает сертификаты за вас — направьте Caddyfile на панель, и всё просто заработает:

Caddyfile
panel.example.com {
    reverse_proxy 127.0.0.1:2053
}

Советы

  • Сохраняйте базовый веб-путь панели даже за прокси; это эшелонированная защита.
  • Если вы завершаете TLS на прокси, возможно, стоит выставить XUI_SKIP_HSTS=true на панели — см. справочник по переменным окружения.
  • Проксируйте также сервер подписки, чтобы его содержимое отдавалось по HTTPS.

On this page