Nginx proxy_pass Base64 URL 截断

Nginx proxy_pass Base64 URL 截断

我使用非缓存 Nginx 代理将端口 80 上的某些路径映射到另一个端口上特定于应用程序的 http 服务器。

这对于几乎所有 URL 都相当有效,但是包含 Base64 编码数据的长 URL 会提前被截断。它们会在非常短的长度时被截断,远远早于 large_client_header_buffers 限制。例如,我的应用服务器收到如下 URL

/set/test_9_0/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAtklEQVR4Xu3VwRHCMBTE0BgG

原始 URL 运行了大约 1-2 KB。看来,%2B在此示例中,原始 URL 在截断位置后立即继续。为什么 Nginx 会在此位置截断 URL,以及如何防止这种情况发生?我仍然需要路径转换,因为应用程序将始终在根路径级别提供某些服务。

答案1

可能会受到proxy_headers_hash_max_size。默认值为 512,因此可以剪辑请求标头信息。

相关内容