外观
Nginx 与 HTTPS
Nginx 作为统一公网入口,终止 TLS,并分别转发 HTTP 和实时连接。客户端只需要一个站点域名。
普通部署配置
源码中的 deploy/nginx.conf 已包含完整 HTTP 配置。根目录必须指向 public,HTTP 上游为 127.0.0.1:8787,/ws 上游为 127.0.0.1:6060。
WebSocket 的关键配置如下,必须放在站点 server 块内:
nginx
location = /ws {
proxy_pass http://127.0.0.1:6060;
proxy_http_version 1.1;
proxy_set_header Host $http_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_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
proxy_buffering off;
}HTTP 代理保留 Host 与 X-Forwarded-Proto,否则安装向导和资源链接可能生成错误的域名或协议。入口设置 client_max_body_size 128m;这只是传输上限,业务上传限制仍由后台控制。
HTTPS
为实际域名签发有效证书,在 Nginx 或宝塔中安装证书和完整证书链,将 HTTP 重定向到 HTTPS。证书文件路径由你的证书管理工具决定。
nginx
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;这段是站点内需要替换的 TLS 配置,不是完整 server。不要将示例证书路径直接上线。example.com 仅是文档占位域名;本机 hosts 映射不会使你拥有该域名的公网证书签发权限。
后台 WebSocket 公网地址填 wss://example.com/ws。WebSocket API 地址保持内部 Register 地址,例如 127.0.0.1:2060,它不是浏览器访问地址。
Docker 与宝塔
- Docker:宿主 Nginx 代理到
127.0.0.1:8080,保留 Upgrade 头,容器 Nginx 再分流到 app;见 Docker 安装。 - 宝塔:在已有站点的配置文件中设置
location,使用宝塔管理证书;见 宝塔安装。
资源访问
公开图片和头像可以由 Nginx直接读取。私有媒体原始 .bin 文件不能按存储路径直接开放,文件下载使用服务端返回的 /app/file/... 地址。不要对整个 uploads 目录添加无条件的 ^~ 静态放行规则。
校验配置后再重载:
bash
sudo nginx -t
sudo systemctl reload nginx宝塔环境使用面板中的“保存”与 Nginx 重载,或对应的宝塔 Nginx 二进制;不要混用系统 Nginx 的路径。
