PHP - 将 Nginx 与 php-fpm 一起使用时获取自定义 Headers

PHP - Get Custom Headers when Using Nginx with php-fpm

我正在尝试将我的 PHP 网络应用程序(RESTful API)从 Apache 转换为 Nginx。

它在 Apache 中运行良好,但代码库当前使用 apache_request_headers() 方法来检索我们用于身份验证的 custom headers .例如 header 是 auth_system_signature.

我曾希望用 getallheaders(). However, it appears that this method is undefined when using php-fpm 替换对该函数的调用是一个简单的例子。

我看到各种 "workarounds" on the net 将定义函数(如果它不存在),但它们似乎都在 $_SERVER 上循环,而 $_SERVER 没有我的自定义 header。我很确定如果确实如此,那么我们一开始就不会使用 apache_request_headers()

有没有办法通过 php-fpm 检索请求中的自定义 header,或者我是否只需要转而使用 php-cgi

上下文

事实证明,默认情况下,Nginx 不会传递带有下划线的 headers。您可以将自定义 headers' 下划线替换为连字符 as others have done, or you could update your nginx.conf file 并设置:

underscores_in_headers on

现在您的 headers 将出现在带有 HTTP_ 前缀的 $_SERVER 超全局中。他们也将全部大写。