如何在 nginx 中使用 HttpMapModule 设置 $https 值

如何在 nginx 中使用 HttpMapModule 设置 $https 值

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

相关内容