Nginx 与代理服务共用 443 端口的几种方案小结
单机上既要跑网站又要跑 TLS 代理时,443 端口只有一个。本文对比「应用层 fallback 回落」与「nginx stream + ssl_preread 按 SNI 分流」两种思路,讲清各自工作在哪一层、证书由谁持有,以及如何配合伪装站点降低被探测的概率。
阅读全文 »后端开发 · Linux 运维 · 网络协议 · 数据库 · 容器与自动化,偶尔写点折腾笔记。
单机上既要跑网站又要跑 TLS 代理时,443 端口只有一个。本文对比「应用层 fallback 回落」与「nginx stream + ssl_preread 按 SNI 分流」两种思路,讲清各自工作在哪一层、证书由谁持有,以及如何配合伪装站点降低被探测的概率。
阅读全文 »把一个命令行程序变成开机自启、崩溃自动拉起的服务,远不止写个 ExecStart。本文整理 Restart=on-failure 与 always 的区别、LimitNOFILE 对高并发代理的影响,以及用 journalctl 排查启动失败的常用姿势。
阅读全文 »Nginx/业务日志默认只增不减,跑几个月就把系统盘吃满。本文记录一次线上清理:如何按日期过滤保留最近 N 天、给 nginx 发 USR1 信号重开文件句柄、以及为自定义日志目录补上 daily + rotate + compress 的轮转配置。
阅读全文 »连接时通时不通、握手被 RST、还是应用层返回错误?现象相似但原因完全不同。本文用一个实际案例演示 tcpdump 常用过滤表达式、远端抓包后拉回本地用 Wireshark 看 TCP 三次握手与 RST 的时序。
阅读全文 »一次网络往返 0.x 毫秒,累积起来就是瓶颈。本文对比逐条命令、pipeline、Lua 脚本三种批量写入方式的吞吐差异,讨论 pipeline 并不是事务、以及批量大小如何取舍。
阅读全文 »启动多个 worker 时,一个失败要不要让其它全部退出?context 取消如何传播?本文结合一个抓取服务的重构,介绍 errgroup.WithContext 的用法和常见的 goroutine 泄漏坑。
阅读全文 »