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

Nginx does not forwards remote address to 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'] 访问远程地址时,它总是 returns 127.0.0.1。我正在使用 Django 1.9

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

request.META['HTTP_X_FORWARDED_FOR']

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

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