我有这个在 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 超全局变量中是否可见?我怀疑这可能“正常工作”,而您无需执行任何操作。