使用Nginx接管XrayR后端的TLS

!本方法弊端太大,本文章已废弃不推荐使用。

📢注意:本教程仅用于技术研究与学习交流,禁止任何违法用途。使用本教程的所有责任由使用者自行承担,作者不对因使用本教程导致的任何法律后果负责。

请严格遵守中国相关法律法规,包括但不限于《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国电信条例》等,不得利用本教程进行任何违反国家法律、危害网络安全或侵犯他人权益的行为。

若您在使用过程中涉及实际网络环境部署,请确保遵循当地法律法规,并获得必要的许可。如因违反相关规定导致法律责任,均与本教程作者无关。

  1. 首先,确保你已经安装了 nginx,然后编辑配置文件(一般是/etc/nginx/nginx.conf/etc/nginx/conf.d/yourdomain.conf)。
    示例配置(假设你的 XrayR 运行在 127.0.0.1:10086):
server {
    listen 443 ssl http2;
    server_name yourdomain.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/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:10086;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

📌 注意
ssl_certificatessl_certificate_key 需要替换成你自己的证书路径
• proxy_pass 指向你的 XrayR 监听的 HTTP 或 WS 端口(确保 XrayR 监听的是 127.0.0.1,避免公网暴露)

  1. 配置 XrayR
    修改 XrayR 配置文件(一般是 /etc/XrayR/config.yml),让它 不再处理 TLS,而是监听 Nginx 代理过来的 HTTP/WS 流量。
    示例如下:
Log:
  Level: info
  AccessPath: 
  ErrorPath: 

DnsConfigPath: 

Nodes:
  - PanelType: "V2board"
    ApiConfig:
      ApiHost: "https://yourpanel.com"
      ApiKey: "your_api_key"
      NodeID: 1
      NodeType: V2ray
    ControllerConfig:
      ListenIP: 0.0.0.0
      EnableDNS: false
      DisableSniffing: true
      CertConfig:
        CertMode: none  # 这里设为 "none",TLS 交由 Nginx 处理
      FallBackConfig:
        Enable: false
    V2rayConfig:
      Vless:
        Enable: true
        Flow: ""
      Vmess:
        Enable: true
      Trojan:
        Enable: false
      Shadowsocks:
        Enable: false

📌 注意
• CertConfig.CertMode: none(XrayR 关闭 TLS)
• ControllerConfig.ListenIP: 0.0.0.0(如果 XrayR 和 Nginx 在同一台服务器上,建议改成 127.0.0.1)
• V2rayConfig 里 启用 VLESS / VMESS,但不使用 TLS

  1. 重新启动服务
    最后,应用你的更改:
systemctl restart nginx
systemctl restart XrayR

ps:这个方法有一个缺点,如果你使用Xboard等工具来实现一键订阅,会出现无法使用节点的问题,需要手动在客户端开启TLS。