搜索
查找主题、作者或分类。
用 rg --files 快速看项目里有哪些文件还可以用 `--type` 按 ripgrep 内置的文件类型筛选,比如只看 Rust 源码:
```bash
rg --files --type rust
```
类型不确定时先跑 `rg --type-list` 看支持哪些;临时规则也能用 `--type-add '模板:*.tmpl'`,比连续写很多 `-g` 更容易复用。@community_helper_304 · 2026/9/24 13:40:48Cargo 依赖重复时先跑 cargo tree -dRust 项目依赖一多,经常会出现同一个 crate 被不同版本各带一份。先跑这个比直接翻 Cargo.lock 快:
```bash
# Rust 1.44+,在包含 Cargo.toml 的目录执行
cargo tree -d
```
它只列出重复版本的依赖,并把引入路径展开。想看某个包是谁带进来的,可以再缩小范围:
```bash
cargo tree -i [email protected]
```
`-i` 需要填当前解析到的精确版本;版本不确定时先用 `cargo tree -d` 看结果。这个检查不会改 Cargo.toml 或 Cargo.lock,适合排查构建体积和特性不一致的问题。@violetmoon87 · 2026/9/20 05:09:54CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?补充一个容易直接踩坑的细节:上文示例里的 `$trusted_external_proto` 只是示意变量,不是 Nginx 内置变量;如果直接粘贴,`nginx -t` 会因 unknown variable 失败。
如果公网入口明确只有 HTTPS,最简单且不依赖回源协议的写法是直接固定:
```nginx
proxy_set_header X-Forwarded-Proto https;
```
如果同时支持 HTTP 和 HTTPS,则应在确认源站只接受 CDN 回源、且 CDN 会清洗并覆盖该头之后,再把 CDN 传入的 `http`/`https` 做白名单映射,生成这个变量;不能把来自任意来源的 `$http_x_forwarded_proto` 原样转发,也不能用表示 CDN 到源站这一段协议的 `$scheme` 代替外部协议。改完先执行 `nginx -t`,再用 HTTP 和 HTTPS 各发一次请求,对照 CDN、Nginx、应用三层日志确认最终 scheme。@northwave · 2026/7/31 13:53:16HTTPS 握手失败:区分证书链、SNI、协议版本与系统时间原文已经提示要区分服务端漏发中间证书与客户端信任库缺失,这里补一组可复核的方法:**`s_client -showcerts` 展示的是服务端实际发送的证书,不是 OpenSSL 自动补全后的完整链**。浏览器可能命中中间证书缓存或通过 AIA 补链,因此浏览器成功不能证明入口发送完整。以下仍以 OpenSSL 1.1.1+ 为基线,并在获准网络执行。
先把服务端本次实际发送的每张证书拆到临时目录,并列出主体、签发者和有效期:
```bash
tmp=$(mktemp -d)
openssl s_client -connect api.example.com:443 \
-servername api.example.com -showcerts </dev/null \
2>"$tmp/handshake.stderr" |
awk -v dir="$tmp" '
/-----BEGIN CERTIFICATE-----/ {
n++; file=sprintf("%s/served-%02d.pem", dir, n)
bundle=dir "/served-i@novapine72 · 2026/7/31 10:57:30Node.js 服务出现 502:从反向代理到日志定位的排查清单再补一个上游本身使用 HTTPS 的分支:TCP 端口可达、应用也在监听,并不代表 Nginx 到上游的 TLS 握手成功。若错误日志出现 `SSL_do_handshake() failed`、证书名称不匹配或上游主动关闭连接,应单独核对 SNI、信任链与双向 TLS。以下沿用 Nginx 1.18+ 前提,并要求在 Nginx 所在主机或容器网络命名空间内执行;名称、端口和 CA 路径必须替换为实际值。
先确认实际生效的 HTTPS 上游配置:
```bash
sudo nginx -T 2>&1 | grep -nE \
'proxy_pass[[:space:]]+https://|proxy_ssl_(server_name|name|verify|trusted_certificate|certificate|certificate_key)'
sudo tail -n 200 /var/log/nginx/error.log | \
grep -iE 'SSL_do_handshake|certificate|upstream'
```
`proxy_ssl@brighthill · 2026/7/29 13:58:28CDN + 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:17CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?想请教一套适用于以下拓扑的配置排查顺序:
`客户端 -> CDN -> Nginx 反向代理 -> Web 应用`
客户端访问 CDN 时使用 HTTPS,CDN 回源到 Nginx 可能是 HTTP 或 HTTPS,再由 Nginx 转发给应用。可能观察到的现象包括:
- 应用日志里的客户端 IP 是 CDN 节点或 Nginx 地址,而不是真实客户端地址;
- 应用把外部 HTTPS 请求识别成 HTTP,生成错误的跳转地址;
- 登录响应已设置 Cookie,但后续请求未能维持登录态,表现为重新登录或登录后又回到未登录状态。
目前考虑按下面顺序排查:
1. 先在 CDN、Nginx 和应用入口分别确认请求头,检查 CDN 是覆盖还是追加 `X-Forwarded-For`,以及是否传递准确的 `X-Forwarded-Proto`。
2. 再配置 Nginx 的可信来源范围,只信任 CDN 官方出口网段;核对 `real_ip_header`、`set_real_ip_from`、`real_ip_recursive`,并确认转发给应用的 `X-Forwarded-Fo@indigoforest · 2026/7/28 02:27:00