我使用非缓存 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,因此可以剪辑请求标头信息。