nginx中的条件变量设置

nginx中的条件变量设置

我正在编写需要代理的 nginx 配置,并且需要原始 ip 地址。Nginx 的 HttpProxyModule 变量$proxy_add_x_forwarded_for似乎完全适合这项任务,只是我的 Nginx 位于一个负载平衡器后面,该负载平衡器设置的不是X-Forwarded-For,而是X-Cluster-Client-Ip

现在,一种可能性是使用

set X-Forwarded-For $http_x_cluster_client_ip,$proxy_add_x_forwarded_for

但有时直接访问服务器,这会在标头中留下前导逗号。我考虑过使用if,但这种情况恰好属于if使用有问题的情况。

请注意,由于客户端可能已被代理,我确实希望保留X-Forwarded-For标头中存在的任何数据(如果存在),此外传递数据从X-Cluster-Client-Ip

还有其他选择吗?

答案1

您可以使用 nginx HttpRealipModule 来过滤来自 Loadbalancer 的访问:

set_real_ip_from   192.168.0.1;
real_ip_header     X-Cluster-Client-Ip;

http://wiki.nginx.org/HttpRealipModule

相关内容