当我们的 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 标头大小之间发生了一些我们无法弄清楚的奇怪现象。