Files
maidong-ktv/selfhost-source/deploy/iis/applicationHost.config.snippet.xml
T
zijunchiang 87aa979abd 合并自建歌曲源支线(selfhost-source)+ 版本号按约定修正为 1.6.0
版本号:
- 1.5.11 越界(规则 3 规定 patch ≤ 10)→ 修正为 1.6.0(进位到 minor、patch 归 0)
- versionCode 43 不变:43 从未对外发布,本次修正只是把命名拉回约定

合并支线(原在工作区根目录、App 仓库之外,DESIGN.md 自称"支线"):
- selfhost-source/server/   自建歌曲源服务器(纯 Python 标准库、零 pip 依赖)
- selfhost-source/deploy/、DESIGN.md、LIBRARY.md、build_inventory.py
- selfhost-source/inventory/ 小清单(playlists.csv、song-stats.md 等)
- ⚠️ inventory 生成物(songs-*.csv / singers-top.csv,共 84MB)不入库,
  已写入 .gitignore;需要时用 build_inventory.py 依据 muse.db 重新生成

同时入库的 App 侧支线改动(此前为工作树未提交状态):
- Whoami.kt(whoami 设备心跳)、DeviceIdentity.kt(设备身份伪装)
- PushDownload.kt / PushDownloadClient.kt(点歌推送)
- AdVideoFilter 带 query/fragment 的地址闸门;KTV_BRIDGE_API 11 → 13
- 修 ktv_api.js 的 global.KtvBridgeApiVersion(12 → 13,与注释及 Kotlin 两处校验一致)
- 对应单测:WhoamiTest / DeviceIdentityTest / PushDownloadTest / AdVideoFilterTest(共 39 例)

文档:
- DESIGN.md 的"在 App 仓库之外"约定改为"已并入仓库统一版本化"
- AGENTS.md 版本号行更新为 1.6.0/43,并新增支线并入说明

验证:assembleRelease + testReleaseUnitTest 全过(39 例)
2026-10-14 02:06:28 +08:00

70 lines
4.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<!--
麦动KTV 自建歌曲源服务器 —— IIS applicationHost.config 片段(**服务器级**配置)
⚠️ 这是一个"片段",不是可以直接替换整份 applicationHost.config 的完整文件:
请把这几个节点**手工合并**进真正的
%windir%\System32\inetsrv\config\applicationHost.config
的 <configuration><system.webServer> 里面(已有同名节点就合并子元素,别写重复节点)。
⚠️ 需要**管理员权限**:applicationHost.config 默认只有 Administrators / SYSTEM 可写;
改之前先备份(复制成 applicationHost.config.bak),改错会导致整个 IIS 起不来。
也可以**完全不动这个文件**,改用 IIS 管理器 UI 完成同样的三件事(推荐新手):
* ARR 代理: ARR → Server Proxy Settings → 勾 Enable proxy → Apply
(= 下面 <proxy> 节点;Timeout/Response buffer 也在这一页)
* 放行服务器变量: URL Rewrite → View Server Variables → Add
(= 下面 <allowedServerVariables>;四个都要加)
* 上传缓冲: IIS 管理器 → 站点 → Configuration Editor → system.webServer/serverRuntime
→ uploadReadAheadSize(= 下面 <serverRuntime>,也可留默认)
三块配置各自解决的问题(**两个站点共用**:API 站 `api-site/web.config` +
媒体站 `media-site/web.config`):
① <proxy> —— 让 ARR 真的当反向代理(不开 = 站点 502);
preserveHostHeader 保留原始 Host,避免后端看到内网主机名;
proxyTimeout/connectTimeout/sendTimeout 给到 600 秒
(媒体是大文件,默认 120 秒不够);
② <allowedServerVariables> —— 放行两份 web.config 里 <serverVariables> 用的四个头,
**不放行则站点直接 500.19 打不开**;
③ <serverRuntime> —— 大请求体(CSV 导入)读入缓冲,避免代理层把上传截断。
-->
<configuration>
<system.webServer>
<!-- ① ARR:启用代理(不开这一项,web.config 里的 Rewrite 到绝对 URL 会 502.3)
enabled="true" = 启用反向代理(IIS 管理器里的 Enable proxy)
preserveHostHeader="true" = 把原始 Host(ktv.example.com)转给后端,
后端就不会看到内网主机名(HTTPS/域名场景必须)
reverseRewriteHostInResponseHeaders="false" = 不要改写响应里的 Location/Host,
避免把内网地址/端口暴露或改错
⚠️ 下面两行是**可选**的超时设置(默认 120 秒对媒体下载偏短;媒体是大文件、
慢客户端会拖很久,建议给到 10 分钟 = 600)。若你的 ARR 版本不接受这两个属性
(配置一保存就报错),请删掉它们,改用 IIS 管理器 → ARR Cache → Server Proxy
Settings → Time-out (seconds) = 600 来设置,效果一样。
-->
<proxy enabled="true" preserveHostHeader="true" reverseRewriteHostInResponseHeaders="false"
proxyTimeout="600" connectTimeout="600" sendTimeout="600" />
<!-- ② 放行服务器变量:web.config 里的 <serverVariables> 用到这四个头。
不放行 → 站点报 500.19("This configuration section cannot be used at this path")。
也可以不加这一段,改用 IIS 管理器 → URL Rewrite → View Server Variables → Add 逐个添加。
⚠️ 若你的 ARR 已经自动追加 X-Forwarded-For(部分版本会),仍建议保留本段:
后端的 trusted_proxies 白名单才是最终依据,重复设置不会有副作用。 -->
<rewrite>
<allowedServerVariables>
<add name="HTTP_X_FORWARDED_FOR" />
<add name="HTTP_X_FORWARDED_PROTO" />
<add name="HTTP_X_REAL_IP" />
<add name="HTTP_X_FORWARDED_HOST" />
</allowedServerVariables>
</rewrite>
<!-- ③ 请求体读入缓冲(单位字节,默认只有 48KB):
反代上传(CSV 导入等)超过缓冲时会出现 413/截断类报错,这里给到 32MiB,
与 web.config 的 maxAllowedContentLength 保持一致;后端 max_body_bytes 默认 8MiB。 -->
<serverRuntime uploadReadAheadSize="33554432" />
</system.webServer>
</configuration>