问题描述
我有一个运行Nginx + Gunicorn + Django的EC2实例,放置在Elastic Load Balancer下。 ELB已启用双堆栈(IPv4和IPv6地址)。我在Nginx中设置了以下配置:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
在Django视图中,我尝试按以下方式获取IP地址:
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
这将返回ELB的专用IP,而不是客户端IP。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)