Nginx不会将远程地址转发给gunicorn

时间:2016-01-15 15:54:31

标签: django nginx gunicorn

我有以下nginx配置将请求转发给gunicorn。

location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

但是,当我使用request.META['REMOTE_ADDR']访问远程地址时,它始终返回127.0.0.1。我正在使用Django 1.9

1 个答案:

答案 0 :(得分:1)

这是正确和预期的行为。如果您想访问用户IP,则需要使用:

request.META['HTTP_X_FORWARDED_FOR']

请注意,在开发中(不运行nginx),REMOTE_ADDR仍然是正确的。

我的建议是添加一个中间件或实用程序方法,它将根据您的设置执行条件逻辑以获取实际用户IP。