![如何在 nginx 中使用 HttpMapModule 设置 $https 值](https://linux22.com/image/798070/%E5%A6%82%E4%BD%95%E5%9C%A8%20nginx%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20HttpMapModule%20%E8%AE%BE%E7%BD%AE%20%24https%20%E5%80%BC.png)
我正在尝试在http
上下文中添加以下块$https
以基于以下内容进行设置$http_x_forwarded_proto
:
map $http_x_forwarded_proto $https {
default off;
https on;
}
但是配置测试失败,提示:
nginx: [emerg] the duplicate "https" variable in /etc/nginx/nginx.conf:36
nginx: configuration file /etc/nginx/nginx.conf test failed
答案1
从 1.1.11 版开始,变量 $https 就变成了内部变量。
由于它现在是内部的,并且请求本身不是通过 HTTP 进行的,因此最好的方法是将此信息传递给 fastcgi 处理程序。这是我的 nginx.conf 中的内容(通过包含)
map $http_x_forwarded_proto $fastcgi_https {
default '';
https on;
}
然后我在位置块中使用下面的代码来处理fastcgi_pass
fastcgi_param HTTPS $fastcgi_https;
fastcgi_param SERVER_PORT $http_x_forwarded_port;