将任意 http 请求标头传递给 nginx,然后传递给 php

将任意 http 请求标头传递给 nginx,然后传递给 php

我有这个在 nginx 和 fastcgi(php-fpm) 上运行的 Web 服务。一些嵌入式 http 客户端使用该 Web 服务,这些客户端在使用该服务时需要发送一些任意的 http 请求标头。例如:

CLIENT_ID: client1
CLIENT_AUTH_TOKEN: d84ldx

或类似的东西。

我不确定这种请求到达时是否会被 nginx 捕获。如果会,nginx 将如何存储额外的 HTTP 标头的值?以及如何告诉 nginx 将参数传递给 php?

我已经尝试过

fastcgi_param CLIETN_ID $client_id 

进入 conf/fastcgi_params 配置文件,我认为这将有助于 nginx 将 CLIENT_ID 中的内容存储为 $client_id 参数。我还放了

fastcgi_param CLIENT_ID $client_id

只需获取 $client_id 中存储的内容并将其作为键控“CLIENT_ID”传递给 php,这样 php 就可以使用 $_SERVER['CLIENT_ID'] 访问它。

不幸的是,上述方法没有奏效。当我这样做时

nginx -t 

我收到错误“未知参数 client_id”。我哪里出错了,如何修复?

谢谢。

答案1

请求标头被分配以 $http_ 开头的变量,因此 Client-Id 的请求标头将存储在 $http_client_id 中。尝试

fastcgi_param CLIENT_ID $http_client_id;

我很确定 nginx 已经传递了所有 http 标头,因此它可能已经可以作为 $_SERVER['HTTP_CLIENT_ID'] 使用

答案2

您是否检查过标头在 $_SERVER 超全局变量中是否可见?我怀疑这可能“正常工作”,而您无需执行任何操作。

相关内容