nginx 代理对 tomcat 发出 400 错误请求,但对静态内容没有错误

nginx 代理对 tomcat 发出 400 错误请求,但对静态内容没有错误

当我们的 cookies 达到一定大小(超过 7k)时,我们遇到了一个问题,nginx 在代理到我们的 tomcat 时返回 400 Bad Request 和一个空响应。但是,当 nginx 提供静态内容时,不会发生这种情况。我们已经尝试更新 nginx 配置以增加缓冲区大小,以便它能够处理高达 16k 的单个标头(我们还尝试在服务器级别进行设置):

http {
  # ...
  client_body_buffer_size     32k;
  client_header_buffer_size 16k;
  large_client_header_buffers 4 16k;
  # ...
}

我们还将 tomcat 的 max-http-header-size 提高到了 16k。如果我们将 cookie 大小增加到 16k 以上,我们仍然会收到 400 错误请求,但响应会显示“请求标头或 Cookie 太大”错误消息。8k 和 16k 标头大小之间发生了一些我们无法弄清楚的奇怪现象。

相关内容