3x-ui3x-ui
运维

反向代理

通过 Nginx 或 Caddy 为 3x-ui 面板和订阅提供 Let's Encrypt TLS 保护。

反向代理让你能够在一个简洁的域名上提供面板和订阅服务,并自动启用 HTTPS,同时将真实端口隐藏在 80/443 端口之后。更希望让面板直接终结 TLS?可以改用 x-ui SSL 菜单来获取证书。

生成配置

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

面板使用 WebSocket 来实时更新,因此代理必须传递 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
}

小贴士

  • 即使在代理之后,也请保留面板的 Web 基础路径;这是纵深防御。
  • 如果你在代理处终结 TLS,可能需要在面板上设置 XUI_SKIP_HSTS=true——参见环境变量参考
  • 也请代理订阅服务器,使其内容通过 HTTPS 提供。

On this page