RustDesk 中文网 v1.3.9 已更新(2026-07-25)—— 新增UDP协议支持,优化连接稳定性,立即更新

RustDesk Nginx反向代理与HTTPS配置完全指南

立即下载RustDesk 中文网 全平台支持 · 官方最新版

为什么需要Nginx反向代理

部署RustDesk自建服务器后,默认情况下hbbs和hbbr服务直接暴露在公网上。虽然这种方式简单直接,但在生产环境中存在一些问题:

通过Nginx反向代理,可以解决上述问题,同时提升安全性、可维护性和专业性。

前置条件

已部署RustDesk服务端

在配置Nginx之前,你需要已经部署好RustDesk服务端:

已安装Nginx

确保Nginx已经安装并可以正常运行:

# Ubuntu/Debian
sudo apt update
sudo apt install nginx

# CentOS/RHEL
sudo yum install nginx

# 验证安装
nginx -v

已准备域名和SSL证书

配置HTTPS需要:

RustDesk端口说明

在配置反向代理前,先了解RustDesk服务使用的端口:

端口 协议 用途
21114 TCP Web控制台(可选)
21115 TCP NAT探测服务
21116 TCP ID注册服务
21117 TCP Relay服务控制
21118 TCP WebSocket/HTTP服务
21119 TCP WebSocket/HTTP服务

通常,hbbs和hbbr会监听这些端口。Nginx反向代理主要针对21118/21119等Web相关端口。

基础Nginx配置

HTTP反向代理配置

以下是最基础的Nginx反向代理配置,将 hbbs 的 Web 接口通过域名暴露:

server {
    listen 80;
    server_name rustdesk.example.com;

    location / {
        proxy_pass http://127.0.0.1:21114;
        proxy_http_version 1.1;
        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;
    }
}

HTTPS反向代理配置

生产环境强烈建议使用HTTPS:

server {
    listen 80;
    server_name rustdesk.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name rustdesk.example.com;

    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:21114;
        proxy_http_version 1.1;
        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;
    }
}

WebSocket代理配置

RustDesk的Web客户端和控制台使用了WebSocket协议,Nginx需要正确配置WebSocket转发:

location /ws/ {
    proxy_pass http://127.0.0.1:21118;
    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;
}

WebSocket代理的关键是正确设置 Upgrade 和 Connection 头部,否则WebSocket连接会失败。

完整生产环境配置示例

以下是一份更完整的生产环境Nginx配置,包含WebSocket支持、安全头部和性能优化:

server {
    listen 80;
    server_name rustdesk.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name rustdesk.example.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    location / {
        proxy_pass http://127.0.0.1:21114;
        proxy_http_version 1.1;
        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 86400;
    }

    location /ws/ {
        proxy_pass http://127.0.0.1:21118;
        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_read_timeout 86400;
    }
}

SSL证书申请与自动续期

使用Certbot申请Let’s Encrypt证书

# 安装Certbot
sudo apt install certbot python3-certbot-nginx

# 申请证书
sudo certbot --nginx -d rustdesk.example.com

# 测试自动续期
sudo certbot renew --dry-run

手动配置证书

如果你有商业证书,将证书文件上传到服务器后,在Nginx配置中指定路径即可。

安全加固建议

限制访问IP

如果RustDesk服务仅供特定人员使用,可以在Nginx中限制访问IP:

location / {
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny all;
    # ... proxy配置
}

启用基本认证

为Web控制台添加一层HTTP基本认证:

# 生成密码文件
sudo htpasswd -c /etc/nginx/.htpasswd admin

然后在Nginx配置中添加:

location / {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
    # ... proxy配置
}

防火墙配置

配合Nginx反向代理,可以进一步收紧防火墙规则:

  1. 关闭21114端口的公网访问(通过Nginx入口访问)
  2. 仅开放443端口和RustDesk需要的TCP/UDP端口
  3. 使用fail2ban防止暴力破解

常见问题排查

443端口无法访问

检查项目包括:

  1. 域名是否正确解析到服务器IP
  2. 防火墙是否放行443端口
  3. SSL证书路径是否正确
  4. Nginx配置语法是否正确

WebSocket连接失败

常见原因和解决方法:

现象 原因 解决
Web界面加载但不连接 WebSocket未代理 添加Upgrade头部
连接后频繁断开 超时时间过短 增加proxy_read_timeout
报403错误 路径匹配错误 检查location路径

HTTPS配置后不生效

排查步骤:

  1. 执行 sudo nginx -t 检查配置语法
  2. 执行 sudo systemctl reload nginx 重新加载
  3. 查看Nginx错误日志 /var/log/nginx/error.log
  4. 确认证书文件权限正确

Nginx与RustDesk服务共存

如果同一台服务器上还运行其他Web服务,Nginx可以统一作为入口。例如,将RustDesk控制台放在 /rustdesk/ 路径下:

location /rustdesk/ {
    proxy_pass http://127.0.0.1:21114/;
    proxy_http_version 1.1;
    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_pass 末尾的斜杠,它决定了路径是否被剥离。

总结

通过Nginx反向代理RustDesk服务端,可以实现统一的HTTPS访问入口、更好的安全控制和更专业的访问方式。配置过程主要包括Nginx安装、SSL证书部署、反向代理规则设置和WebSocket支持。完成后,配合IP限制、基本认证和防火墙规则,可以大幅提升RustDesk自建服务器的安全性和可维护性。遇到问题时,优先检查Nginx配置语法、SSL证书有效性和WebSocket头部设置。

这篇教程有帮助吗?立即下载RustDesk 中文网试试吧!

全平台支持 · 安全无毒 · 官方最新版