This commit is contained in:
gr
2026-09-29 15:52:07 +08:00
parent 5dfc9303da
commit 993f4c42ab
363 changed files with 42810 additions and 15 deletions
@@ -0,0 +1,85 @@
# 手机远程控制台(/m/)的 HTTPS 入口。
#
# 自 2026-09-28(mobile-http-20260928)起按用户要求,内外网都允许明文 HTTP 登录手机端
# (MOBILE_REQUIRE_HTTPS 默认 never)。HTTP 下 ZYT 密码和手机会话令牌在公网上可被截获;
# 配好本 HTTPS 入口后,建议给 api 服务加环境变量 MOBILE_REQUIRE_HTTPS=auto(公网必须 HTTPS,内网仍可 HTTP)。
#
# 启用步骤(宝塔面板或手工均可):
# 1. 证书:宝塔「网站 → im.zhenyangtang.cn → SSL」申请 Let's Encrypt,或 acme.sh。
# 公网 443 没有转发到本机时,HTTP-01 验证会失败,改用 DNS-01(DNS API)签发。
# 2. 端口:路由器把公网 TCP 443(或选定的 HTTPS 端口,例如 8443)转发到 192.168.110.111。
# 用非 443 端口时把下面的 listen 改成对应端口,手机访问 https://im.zhenyangtang.cn:8443/m/。
# 3. 把本文件复制成 im.zhenyangtang.cn.https.conf 放到与现有 conf 相同的目录,修改证书路径,
# `nginx -t` 通过后 `nginx -s reload`。现有的 80 端口配置保持不动,桌面端继续可用。
# 4. 验证:curl -I https://im.zhenyangtang.cn/m/ 返回 200;手机浏览器打开后登录页不再提示明文连接。
#
# 注意 X-Real-IP 必须由 Nginx 用 $remote_addr 覆盖写入:后台用它做登录限流和"是否内网"的判断。
server {
listen 443 ssl http2;
server_name im.zhenyangtang.cn;
ssl_certificate /www/server/panel/vhost/cert/im.zhenyangtang.cn/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/im.zhenyangtang.cn/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL_IM:10m;
ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=31536000" always;
client_max_body_size 100m;
location ^~ /api/v2/ {
proxy_pass http://127.0.0.1:18766;
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_connect_timeout 15s;
proxy_send_timeout 300s;
# 桌面端命令通道长轮询最长挂起 25 秒,远小于这里的读超时。
proxy_read_timeout 300s;
}
location ^~ /api/ {
proxy_pass http://127.0.0.1:18766/api/v2/;
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_connect_timeout 15s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
location ^~ /gateway/ {
proxy_pass http://127.0.0.1:18770/;
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_connect_timeout 15s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
location / {
proxy_pass http://127.0.0.1:18766;
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 $connection_upgrade;
proxy_connect_timeout 15s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
access_log /www/wwwlogs/im.zhenyangtang.cn.https.log;
error_log /www/wwwlogs/im.zhenyangtang.cn.https.error.log;
}