网易首页 > 网易号 > 正文 申请入驻

2个Caddy抢443端口:一个VPS跑实时推送的魔幻配置

0
分享至


一台服务器上跑两个Caddy,就像一间公寓里住了两个房东,都觉得自己该收房租。Mercure自带的嵌入式Caddy非要占443端口,可你主Caddy早就在那儿了。冲突不是"可能",是一定。

这是部署Mercure(一种基于服务器推送事件/SSE的实时协议)时最隐蔽的坑。很多人按官方文档装完,发现服务起不来,日志里全是端口占用。本文用Ansible完整复现一套共存方案,包括三个你Google不到的细节。

第一步:把Mercure的Caddy关进笼子

Mercure的嵌入式Caddy默认行为很霸道:自动申请HTTPS证书、开2019端口管自己、绑定443对外服务。这些必须全关。

配置块只有三行,缺一行都炸:

auto_https off —— 阻止它去Let's Encrypt要证书,你的主Caddy会处理TLS。

admin localhost:2039 —— 把管理API从2019挪走,主Caddy的admin还占着2019。

http://localhost:3080 —— 只监听本地回环,外网流量由主Caddy反向代理进来。


端口3080是作者踩坑后的建议。3000-3099这个区间Docker爱用,但3080相对冷门。你可以netstat看一眼再定,重点是别跟现有服务撞车。

第二步:主Caddy的反向代理有致命细节

主Caddy配置看起来标准,但有两个参数写错就全完。

flush_interval -1 是SSE的生命线。 Caddy默认会缓冲响应,等攒够一批再发。可SSE(服务器推送事件)是流,永远等不到"一批"。不设-1,客户端永远收不到消息,调试时你会怀疑人生——连接成功,就是没数据。

第二个坑是压缩。Caddy的encode gzip zstd对普通页面是神器,对SSE是毒药。压缩流需要知道"结尾"才能解压,SSE没有结尾。你必须把Mercure路由摘出来:

@not_mercure { not path /.well-known/mercure* }
encode @not_mercure gzip zstd

这段的意思是:除了Mercure的SSE端点,其他全压缩。如果哪天Mercure拆了,模板还能优雅降级成简单的encode gzip zstd。

第三步:JWT密钥的Ansible Vault方案


发布端(你的PHP后端)和订阅端(用户浏览器)用同一套JWT验身份。密钥存在哪儿?硬编码是自杀,环境变量裸奔是半死。

作者的做法:defaults/main.yml里引用vault变量,实际密钥锁在Ansible Vault。Mercure启动时只读一个简单的环境文件:MERCURE_JWT_SECRET=xxx。

这个设计让轮换密钥变得可操作——改Vault,重跑Playbook,滚动重启,不用ssh进去手动改配置。

那些文档没写的调试信号

healthz端点200响应,是K8s时代留下的肌肉记忆。作者给Mercure配了respond /healthz 200,负载均衡器探活时用得上。

cors_origins和publish_origins的星号与域名搭配也有讲究。匿名订阅(anonymous)开不开,取决于你的业务是否允许未登录用户收推送。这些没有标准答案,但配置项的排列组合决定了你是"能用"还是"好用"。

整套方案跑通后,你的VPS上会有两个Caddy进程:一个面对公网,一个躲在localhost后面专门推流。它们不打架,因为端口和职责被严格切分。

最后留个开放问题:如果你的实时推送量从每秒100条涨到10万条,这个架构的瓶颈会先出现在主Caddy的反向代理层,还是Mercure的SSE连接池?你打算怎么验证?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
浙江东阳,33 岁的男子,在母亲长眠的公墓旁,在车里结束了生命

浙江东阳,33 岁的男子,在母亲长眠的公墓旁,在车里结束了生命

魔都姐姐杂谈
2026-03-30 19:25:57
广东阳江一男子商场玩真人CS时高坠身亡,事故调查报告公布

广东阳江一男子商场玩真人CS时高坠身亡,事故调查报告公布

澎湃新闻
2026-03-31 09:12:27
驯服「灰犀牛」:银行中收「突围战」

驯服「灰犀牛」:银行中收「突围战」

馨金融
2026-03-31 16:10:13
又一男星塌房!宋宁峰婚内出轨,妻子威胁小三:敢爆料就曝你裸照

又一男星塌房!宋宁峰婚内出轨,妻子威胁小三:敢爆料就曝你裸照

萌神木木
2026-03-31 12:00:19
霍尔木兹海峡突发!刚刚,A股异动

霍尔木兹海峡突发!刚刚,A股异动

中国基金报
2026-03-31 11:47:38
震惊!一程序员与公司达成73万补偿和解,网友:公司还是低头了…

震惊!一程序员与公司达成73万补偿和解,网友:公司还是低头了…

火山詩话
2026-03-31 12:16:45
张雪峰公司新掌门直播翻车:只学皮毛,丢了最值钱的东西

张雪峰公司新掌门直播翻车:只学皮毛,丢了最值钱的东西

魔都姐姐杂谈
2026-03-31 05:25:26
霍尔木兹海峡海运中断,推动油气和氮肥、磷肥价格急剧上涨,外媒:俄罗斯已成为特朗普决定对伊朗开战的明显受益者

霍尔木兹海峡海运中断,推动油气和氮肥、磷肥价格急剧上涨,外媒:俄罗斯已成为特朗普决定对伊朗开战的明显受益者

极目新闻
2026-03-31 14:58:00
无视高市早苗服软,中国在钓鱼岛周边铺设关键设施,强化实控能力

无视高市早苗服软,中国在钓鱼岛周边铺设关键设施,强化实控能力

生活魔术专家
2026-03-31 16:01:41
@深圳人,今天下班早点回家!

@深圳人,今天下班早点回家!

深圳晚报
2026-03-31 16:43:03
打!倾家荡产也要打!以色列最新民调:75%民众要求死磕到底!

打!倾家荡产也要打!以色列最新民调:75%民众要求死磕到底!

共工之锚
2026-03-30 15:16:22
打破欧美日垄断数十年!张雪机车WSBK夺冠 张雪:五年吃掉国际大牌50%以上份额

打破欧美日垄断数十年!张雪机车WSBK夺冠 张雪:五年吃掉国际大牌50%以上份额

快科技
2026-03-31 07:22:06
比亚迪2025交卷:634亿元死磕技术无人区 从中国汽车销冠冲到全球前五

比亚迪2025交卷:634亿元死磕技术无人区 从中国汽车销冠冲到全球前五

快科技
2026-03-30 19:25:05
白大褂下的擦边视频,谁在消费职业尊严?

白大褂下的擦边视频,谁在消费职业尊严?

古月明
2026-03-31 12:50:06
亚历山大47+5雷霆OT险胜活塞,里德21+10格林19分5篮板

亚历山大47+5雷霆OT险胜活塞,里德21+10格林19分5篮板

湖人崛起
2026-03-31 12:37:31
王石被限制出境

王石被限制出境

料道new
2026-03-30 16:29:44
大战一触即发,特朗普准备豪赌

大战一触即发,特朗普准备豪赌

南风窗
2026-03-30 15:29:40
拟10股派38元,25万股民嗨了 美的440亿元利润,回购加分红全还给股东!

拟10股派38元,25万股民嗨了 美的440亿元利润,回购加分红全还给股东!

红星资本局
2026-03-31 13:27:06
国足唯一遮羞布!拜合拉木替补封神,造2红3黄硬刚非洲劲旅喀麦隆

国足唯一遮羞布!拜合拉木替补封神,造2红3黄硬刚非洲劲旅喀麦隆

侧身凌空斩
2026-03-31 16:24:50
知名女演员被实名举报偷税漏税!工作室发布声明:“绝不姑息”;税务部门回应

知名女演员被实名举报偷税漏税!工作室发布声明:“绝不姑息”;税务部门回应

上观新闻
2026-03-31 14:25:11
2026-03-31 17:43:00
赛博兰博
赛博兰博
专注捣鼓AI效率工具,试图在这个时代留下数字分身的探索者。
552文章数 5关注度
往期回顾 全部

科技要闻

尚未正式宣发,国行苹果AI半夜"意外闪现"

头条要闻

00后女孩回国当职业扫墓人:每天鞠躬上百次 月薪4千多

头条要闻

00后女孩回国当职业扫墓人:每天鞠躬上百次 月薪4千多

体育要闻

县城修车工,用20年成为世界冠军

娱乐要闻

丝芭传媒举报鞠婧祎:瞒报收入竟达85%

财经要闻

高薪内推藏陷阱!"招转培"骗局盯上求职者

汽车要闻

腾势Z9GT到底GT在哪?

态度原创

房产
旅游
手机
公开课
军事航空

房产要闻

14亿!电竞巨头出手,海棠湾“超级运动综合体”来了!

旅游要闻

体育旅游高端智库联盟成立 “贵阳指数”发布

手机要闻

国行iPhone突现Apple智能,苹果回应了

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

特朗普:即使霍尔木兹海峡仍关闭 也愿意结束战争

无障碍浏览 进入关怀版