Nginx反向代理Infinispan Console v13/v14的报错与性能问题排查求助
Nginx反向代理Infinispan Console问题排查方案
核心问题分析
日志报错upstream sent "Content-Length" and "Transfer-Encoding" headers at the same time是因为上游Infinispan服务返回的响应同时包含了这两个HTTP头,违反了HTTP规范;而控制台加载缓慢、无法完整加载,大概率和这个头冲突导致的请求异常,以及静态资源未优化、上游服务状态有关。
以下是具体排查方向:
1. 修复Nginx代理的头冲突问题
在Nginx的location /块中添加配置,强制忽略上游返回的Transfer-Encoding头,避免两个头同时存在:
proxy_ignore_headers Transfer-Encoding;
同时保留chunked_transfer_encoding off;配置,确保Nginx不使用分块传输,统一用Content-Length处理响应。
2. 检查上游Infinispan的响应头
直接请求上游节点的静态资源,验证是否确实返回了冲突的HTTP头:
curl -I http://10.0.1.194:11222/console/fonts/RedHatText-Regular.woff2
如果返回结果同时包含Content-Length和Transfer-Encoding,说明是Infinispan自身的问题:
- 尝试升级Infinispan到v14的最新补丁版本,这类静态资源的头冲突问题可能已被官方修复;
- 调整Infinispan的静态资源服务配置,禁用分块传输模式。
3. 优化静态资源的缓存与传输
控制台加载慢通常和静态资源重复请求有关,给字体、CSS、JS等静态资源单独配置缓存规则:
location ~* \.(woff2|css|js|png|svg)$ { proxy_pass http://infinispan; proxy_set_header Host $http_host; proxy_cache_valid 200 7d; # 缓存有效资源7天 proxy_ignore_headers Transfer-Encoding; # 同步处理头冲突 proxy_buffering on; proxy_buffer_size 8k; proxy_buffers 16 8k; }
同时调整Nginx的代理缓冲区配置,提升响应传输效率,避免因缓冲区不足导致的加载延迟。
4. 验证上游Infinispan节点状态
- 直接访问单个Infinispan节点的控制台(如
http://10.0.1.194:11222/console),确认是否能正常加载所有资源,排除服务端自身的资源缺失或运行异常; - 如果单个节点正常,但负载均衡下异常,给upstream添加粘性会话配置,确保同一客户端固定到一个节点:
upstream infinispan { ip_hash; server 10.0.1.194:11222; server 10.0.1.195:11222; server 10.0.1.196:11222; }
5. 修正异常的请求路径
从错误日志可见请求路径为GET /console /fonts/RedHatText-Regular.woff2 HTTP/1.1,其中/console与/fonts之间存在空格,属于非法路径:
- 检查Infinispan Console的页面源码(如
app.css),确认字体资源的引用路径是否存在空格错误; - 排查Nginx是否存在路径重写或解析异常,确保代理后的路径正确无误。
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

