解决ikuai后台管理页面反向代理404问题
ikuai 的管理页面一般用 IP + 端口 访问,出于习惯和记忆方便考虑,我喜欢配置上域名。
用 caddy 配置上域名后,访问一切良好,直到有一天我升级了 caddy,页面突然打开空白。/static/css/app.be60beb9952431ed9dc9c166d90ab89e.css 等前端 JS 返回 404 状态码。为此进行了排查,结果令人难以理解。

经过和旧版本 caddy 的日志反复对比,发现旧版 caddy(我原来用的 caddy 2.7.5)在 reverse_proxy 的时候,不会转发 Via 请求头 header,然而,升级了 2.10.0 之后,则会自动给请求添加 Via 头,如下:
Via: caddy
经查询,Via 请求头是一个标准 HTTP header,不知道为何 caddy 直到 2.10.0 才引入了该头部,更新日志如下,详细请见2.10.0发布日志:
Via header: The reverse proxy now sets a Via header instead of a duplicate Server header.
大概意思是想留下反向代理服务器的程序信息,此前用的Server这个头,现在改用更标准的 Via 头了。
只是没想到,ikuai 你个浓眉大眼的家伙,竟然偷偷对这个小众的头进行检测(黑人问号,想问下开发团队是啥考虑,有了解的朋友可以告知下)。
此外,我不知道 Nginx 等其他反向代理服务器会不会默认添加这个头部。这个情况写出来供其他人参考。
解决方法
添加 header_up -Via 强制删除 Via 头,这样可以避免 caddy 版本差异带来的头部差异。
Caddyfile
nic.padeoe.com {
reverse_proxy 192.168.31.1 {
header_up -Via
}
}
共有 0 条评论