| title | 拓展内容 |
|---|---|
| description | 此部分内容将说明一些额外的操作流程,请根据自己需要进行配置 |
| icon | Ellipsis |
在这里提供 Mix-Space 的反代配置步骤。
当然不管使用哪种方法,都建议用控制面板(如宝塔、1Panel 等)完成配置,手写反代配置的大佬随意。
另外,不管是前端还是后端的域名,都需要配置好 HTTPS 证书以保证网站能正常访问。
现代服务器面板(如 1Panel 和宝塔面板)自带的反向代理已足以满足 Mix-Space 所需的反代要求(包括 Websocket),因此我们更建议非高级用户使用图形化界面来操作和维护
进入网站,在反向代理栏目下点击添加反代
域名填入你将要使用的域名,目标填写URL地址 + http://127.0.0.1:2333
进入网站 > 网站,并创建一个新网站,选择反向代理
主域名填入你将要使用的域名,并勾选监听 IPV6,代理类型选择 http ,地址填入 127.0.0.1:2333
启动该功能需要两个环境变量
ENABLE_CLOUDFLARED= trueCF_ZERO_TRUST_TOKEN= Tunnel 给的令牌(删掉 cloudflared.exe service install,只保留令牌部分)
1.申请 Cloudflare Zero Trust,关于申请方式请自行查找
2.添加一条隧道,连接方式选择 Cloudflared,名称任意
3.添加一个 Public Hostname,回源选择 HTTP,端口选择 2333
一旦启动成功,你应当在日志中看到如下输出,并在 Cloudflare 后台看到客户端正常上线:
============================================
Starting Cloudflared Tunnel
============================================
============================================
2025-06-06T02:22:40Z INF Using SysV
2025-06-06T02:22:41Z INF Linux service for cloudflared installed successfully
这里假定前端域名为 www.example.com,后端为 server.example.com。
以下是后端 server.example.com 反代配置部分
server {
## 反向代理开始
## WebSocket
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;
}
## Others
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;
}
## 反向代理结束
}前端 www.example.com 反代部分
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;
}
}以下配置文件以 Nginx 为例,请自行修改 SSL 证书路径以及自己的网站域名。
若使用 Caddy 进行配置可参考 Caddyfile 文件示例进行相应修改。
server {
## 反向代理开始
## WebSocket 地址
location /socket.io {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_buffering off;
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;
}
## API 地址
location /api/v2 {
proxy_pass http://127.0.0.1:2333/api/v2;
}
## 简读 render 地址
location /render {
proxy_pass http://127.0.0.1:2333/render;
}
## Kami 地址
location / {
proxy_pass http://127.0.0.1:2323;
}
## 后台地址
location /proxy {
proxy_pass http://127.0.0.1:2333/proxy;
}
location /qaqdmin {
proxy_pass http://127.0.0.1:2333/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";
error_log /www/sites/www.example.com/log/error.log;
access_log /www/sites/www.example.com/log/access.log;
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 /www/sites/www.example.com/ssl/fullchain.pem;
ssl_certificate_key /www/sites/www.example.com/ssl/privkey.pem;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
limit_conn perserver 300;
limit_conn perip 25;
limit_rate 512k;
}如果你需要使用来自 (远端 / 非容器) 的 Redis 服务,你可以通过使用 argv 来动态传入对应的配置项。
支持传入如下值:
redis_hostRedis 服务地址,域名、IP 都可以redis_portRedis 服务端口redis_passwordRedis 服务密码disable_cache是否禁用缓存,默认不启用
在默认情况下,我们认为这样已经足够了。
和编辑其他环境变量一样,在 service.app 的 environment 部分添加你需要传入的值,如下所示:
services:
app:
container_name: mx-server
image: innei/mx-server:latest
environment:
- TZ=Asia/Shanghai
- NODE_ENV=production
- DB_HOST=mongo
- REDIS_HOST=远端地址 // [!code highlight]
- REDIS_PASSWORD=redis?passwd // [!code highlight]
- ALLOWED_ORIGINS=localhost
- JWT_SECRET=YOUR_SUPER_SECURED_JWT_SECRET_STRING
volumes:
- ./data/mx-space:/root/.mx-space修改完成后 docker compose up -d 重启服务即可。
针对这种部署方式,我们可以修改 ecosystem.config.js 在 12 行,也就是 script 这一项,添加你需要传入的值,如下所示:
const { cpus } = require('os')
const { execSync } = require('child_process')
const nodePath = execSync(`npm root --quiet -g`, { encoding: 'utf-8' }).split(
'\n',
)[0]
const cpuLen = cpus().length
module.exports = {
apps: [
{
name: 'mx-server',
- script: 'out/index.js,
+ script: 'out/index.js --redis_host=远端地址 --redis_password=redis?passwd',
autorestart: true,
exec_mode: 'cluster',当你修改完成,你需要重启服务:
pnpm prod:pm2如果你需要使用来自 (远端 / 非容器) 的 MongoDB 服务,你可以通过使用 argv 来动态传入对应的配置项。
支持传入如下值:(除 collection_name 外其余变量名在 Docker 中变量均为对应大写)
collection_name数据库集合名字(Docker 对应变量为DB_COLLECTION_NAME)db_hostMongoDB 服务地址,域名、IP 都可以db_portMongoDB 服务端口db_userMongoDB 服务用户名db_passwordMongoDB 服务密码db_connection_stringMongoDB 数据库连接地址(以mongodb://开头的一串内容),此配置项优先级大于上述五项db_optionsMongoDB 数据库连接选项
和编辑其他环境变量一样,在 services.app 的 environment 部分添加你需要传入的值,如下所示:
services:
app:
container_name: mx-server
image: innei/mx-server:latest
environment:
- TZ=Asia/Shanghai
- NODE_ENV=production
- DB_HOST=远端地址 // [!code highlight]
- DB_USER=mongodb-test // [!code highlight]
- DB_PASSWORD=db?passwd // [!code highlight]
- REDIS_HOST=redis
- ALLOWED_ORIGINS=localhost
- JWT_SECRET=YOUR_SUPER_SECURED_JWT_SECRET_STRING
volumes:
- ./data/mx-space:/root/.mx-space修改完成后 docker compose up -d 重启服务即可。
和 Redis 一样,我们可以修改 ecosystem.config.js 在 12 行,也就是 script 这一项,添加你需要传入的值,如下所示:
const { cpus } = require('os')
const { execSync } = require('child_process')
const nodePath = execSync(`npm root --quiet -g`, { encoding: 'utf-8' }).split(
'\n',
)[0]
const cpuLen = cpus().length
module.exports = {
apps: [
{
name: 'mx-server',
+ script: 'out/index.js --db_host=远端地址 --db_user=mongodb-test --db_password=db?passwd',
autorestart: true,
exec_mode: 'cluster',当你修改完成,你需要重启服务:
pnpm prod:pm2