Mix SpaceMix Space

反向代理

配置反向代理以通过域名访问 Mix Space

为什么需要反向代理

Mix Space 默认运行在本地端口(后端 2333,前端 2323),反向代理可以将域名请求转发到对应端口,并提供 HTTPS、WebSocket 支持。

图形化面板

现代服务器面板(如 1Panel、宝塔面板)自带的反向代理已足以满足 Mix Space 的需求(包括 WebSocket),非高级用户建议使用图形化界面操作。

宝塔面板

进入 网站,在 反向代理 栏目下点击 添加反代

  • 域名 填入你将要使用的域名
  • 目标 填写 URL 地址 + http://127.0.0.1:2333

1Panel

进入 网站 > 网站,创建一个新网站,选择 反向代理

  • 主域名 填入你将要使用的域名,并勾选 监听 IPV6
  • 代理类型选择 http,地址填入 127.0.0.1:2333

Cloudflare Tunnel

除非你在非完整服务器环境(如 Sealos 或 Huggingface Space)部署,否则不推荐在容器内使用 Cloudflare Tunnel,而应在宿主机配置以避免管理不便。

启动该功能需要两个环境变量:

  • ENABLE_CLOUDFLARED = true
  • CF_ZERO_TRUST_TOKEN = Tunnel 给的令牌(删掉 cloudflared.exe service install,只保留令牌部分)

详细步骤

  1. 申请 Cloudflare Zero Trust
  2. 添加一条隧道,连接方式选择 Cloudflared,名称任意
  3. 添加一个 Public Hostname,回源选择 HTTP,端口选择 2333

启动成功后,日志中应看到:

============================================
Starting Cloudflared Tunnel
============================================

Nginx 手写配置

手写配置文件需要较高的技术功底,请量力而行。

双域名配置

假定前端域名为 www.example.com,后端为 server.example.com

后端配置:

server {
    location /socket.io {
      proxy_pass http://127.0.0.1:2333/socket.io;
      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 REMOTE-HOST $remote_addr;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_buffering off;
      proxy_http_version 1.1;
      add_header Cache-Control no-cache;
    }

    location / {
      proxy_pass http://127.0.0.1:2333;
      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 REMOTE-HOST $remote_addr;
      add_header X-Cache $upstream_cache_status;
    }
}

前端配置:

server {
    location ~* \.(gif|png|jpg|css|js|woff|woff2)$ {
      proxy_pass http://127.0.0.1:2323;
      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 REMOTE-HOST $remote_addr;
      expires 30d;
    }

    location / {
      proxy_pass http://127.0.0.1:2323;
      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 REMOTE-HOST $remote_addr;
      add_header X-Cache $upstream_cache_status;
      add_header Cache-Control no-cache;
      proxy_intercept_errors on;
    }
}

使用双域名配置时:

  • API 地址为 https://server.example.com/api/v2
  • 前端地址为 https://www.example.com
  • Gateway 为 https://server.example.com
  • 后台为 https://server.example.com/proxy/qaqdmin

单域名配置

server {
    listen 80;
    listen 443 ssl http2;
    server_name www.example.com;
    index index.html;

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    location /socket.io {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:2333/socket.io;
    }

    location /api/v2 {
        proxy_pass http://127.0.0.1:2333/api/v2;
    }

    location /render {
        proxy_pass http://127.0.0.1:2333/render;
    }

    location / {
        proxy_pass http://127.0.0.1:2323;
    }

    location /qaqdmin {
        proxy_pass http://127.0.0.1:2333/proxy/qaqdmin;
    }

    location /proxy {
        proxy_pass http://127.0.0.1:2333/proxy;
    }

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ssl_protocols TLSv1.3 TLSv1.2;
    error_page 497 https://$host$request_uri;
}

使用单域名配置时:

  • API 地址为 https://www.example.com/api/v2
  • 前端地址为 https://www.example.com
  • Gateway 为 https://www.example.com
  • 后台为 https://www.example.com/proxy/qaqdmin

On this page