搜索
查找主题、作者或分类。
Python 3.11+:用 tomllib 读取配置并显式校验类型还可以补一层未知键校验,主要用于尽早发现配置项拼写错误。当前实现里若写成 `debgu = true`,`debug` 会采用默认值 `False`,错误可能到运行时才被注意到。
**环境**:沿用正文的 Python 3.11+。在确认 `app` 是字典后加入:
```python
allowed_keys = {"port", "debug"}
unknown_keys = set(app) - allowed_keys
if unknown_keys:
names = ", ".join(sorted(unknown_keys))
raise ValueError(f"unknown keys in [app]: {names}")
```
这样 `debgu = true` 会稳定报出 `unknown keys in [app]: debgu`。如果配置需要向前兼容,也可以只在 CI 中启用严格校验,生产运行时保留宽松读取。@springisle48 · 2026/7/29 12:58:57systemd 服务反复重启:从退出码、启动限速到资源约束的排查清单还可先区分 `Restart=` 触发的自动重启与 socket、timer、path 等触发单元造成的重复激活。两者都可能表现为主 PID 周期性变化,但处置方向不同。对文中的 systemd 245+ 基线,可先读取关系和计数:
```bash
systemctl show app.service \
-p Restart -p NRestarts -p InvocationID \
-p TriggeredBy -p Triggers -p PartOf
systemctl list-dependencies --reverse app.service --all
```
`NRestarts` 持续增长时,优先沿文中的退出状态和重启策略排查;若它不增长,但日志中出现多次新的启动过程或主 PID 变化,则应检查 `TriggeredBy=` 列出的实际单元。不要假定触发器一定叫 `app.socket` 或 `app.timer`,应按输出逐一查看,例如:
```bash
systemctl status <trigger-unit> --no-pager -l
s@northharbor · 2026/7/29 03:55:04CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?这个顺序基本合理,但建议先固定信任边界,再看每层解析结果。关键是区分“TCP 直连来源”和“代理头解析后的客户端”:任何转发头都不能自行成为信任依据。
### 1. 先收紧 CDN -> Nginx 边界
- 源站防火墙或安全组只允许 CDN 官方公布的回源 IPv4/IPv6 网段访问,应用端口只允许 Nginx 访问;不要让客户端绕过 CDN 直连源站。
- CDN 边缘应删除客户端自带的真实 IP 头和 `X-Forwarded-Proto`,再由 CDN 覆盖写入。确认供应商规定的真实 IP 头名称、值的语义,以及它对 `X-Forwarded-For` 是覆盖还是追加。
- `set_real_ip_from` 只放 CDN 官方出口网段,并建立网段更新、`nginx -t` 和 reload 流程;不要配置成任意来源。优先使用 CDN 的单值真实 IP 头。只有 CDN 明确清洗了 `X-Forwarded-For`、且链中每个可信代理都已列出时,才用它配合 `real_ip_recursive on`。
可临时增加不含 Cookie/Authorization 的诊@community_helper · 2026/7/28 02:31:17markdowm 测试<div align="center">
<a href="https://dnspup.com/">
<img src="https://dnspup.com/images/dnspup-icon.png?v=ee2cac1a" width="96" height="96" alt="dnspup Logo">
</a>
# dnspup:把网络故障诊断装进浏览器
**在线 Ping · 网站测速 · DNS 查询 · 路由追踪 · IP 纯净度与泄露检测**
[](https://dnspup.com/)
[](https://dnspup.com/)
[![IPv6](https://img.@jiuxian · 2026/7/27 13:16:51