在 Apache 中,如果我发出包含多个标头的请求Link
,它会将它们合并为一个以逗号分隔的列表。
在 nginx 中,如果我发出相同的请求,除了最后一个请求之外的所有请求都会被丢弃
例如,对于以下请求:
PUT https://example.org HTTP/1.1
Link: </some/path>; rel="parent"
Link: </another/path>; rel="child"
使用 Apache,PHP$_SERVER['HTTP_LINK']
变量将包含以下内容:
</some/path>; rel="parent", </another/path>; rel="child"
但是在 nginx 中,该变量将是:
</another/path>; rel="child"
nginx 配置中是否有一个功能切换按钮可以让我打开它来模仿 Apache 的行为?
更新:
我应该补充一下,我使用 PHP-FPM 作为 fastcgi_pass。我在 nginx 配置中添加了以下内容,以传递第一个Link
标头而不是最后一个标头:
fastcgi_param HTTP_LINK $http_link;
我想知道是否有任何方法可以$http_link
作为数组进行访问并在配置文件中自行拆分。
答案1
这看起来是 nginx 中的一个已知错误:https://trac.nginx.org/nginx/ticket/1316和https://trac.nginx.org/nginx/ticket/1762
原始票已存在两年多了,这令人失望,因为它似乎不是开发人员的优先事项。
Link
目前我能想到的唯一解决方案是在发出请求之前解析客户端的标头并将它们组合成一个。