Nodejs从Nginx获取请求头

Zhe*_*Zhe 1 nginx node.js

我正在使用 nginx 代理我的 Nodejs 应用程序。在我的应用程序中,我总是从标头询问“client_id”。当我进行本地测试时。一切正常。但是当我通过 Nginx 推送到服务器和代理时。然后client_id就丢失了。我可以看到,当 nginx 做代理时,它删除了我的自定义标头“client_id”。

我想问的是:

  1. 有没有办法确保 nginx 可以将我的 client_id 传递给nodejs?
  2. 有没有办法让 nginx 传递任何自定义标头?

Zhe*_*Zhe 5

谢谢@Peter Lyons,我刚刚找到原因。是的,nginx 默认会将所有标头传递到目标服务器。但是,例外情况是,默认情况下,nginx 会阻止名称中包含下划线“_”的所有标头。

我不知道nginx为什么要这样做。但在这个问题中,这个下划线是我无法获取标头“client_id”的原因。

有2种方法可以解决:

1、更改标头名称以避免下划线,在本题中,将“client_id”更改为“clientId”或“client-id”

2、在nginx.conf中,http部分内,设置underscores_in_headers on;,例如:

http {
    ....

    underscores_in_headers on;

    ....
}
Run Code Online (Sandbox Code Playgroud)