Nginx反向代理中的坑

今天完成了一个人脸识别系统的开发,在开发环境中调试好之后打算部署到服务器上。由于系统需要调用用户摄像头需要使用https协议访问。而我自己的域名没有在公安局备份,没办法申请SSL证书。于是我借了朋友的一个域名,用Nginx反向代理一下。但是我在生产环境中部署好后端项目之后发现系统无法通过登录验证,同样的代码在开发环境中完全没有问题,经过排查之后发现是用户Token丢失。于是乎想到了肯定是Nginx的锅,搜索了一些资料和文档后,才知道Nginx进行代理时,有一个默认的参数:underscores_in_headers
这个参数默认为false。这个参数的作用是是否转发带下划线的header,而很多人并不知道header的命名规范是最好不要带下划线的。因此如果不把参数设置为True的话,在转发之后header会被去掉。

重新配置Nginx:

1
2
3
4
5
server {
...
underscores_in_headers on;
...
}

完美解决!