我正在尝试在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;