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。
我有以下 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。