我正在使用nginx作为反向代理,我的Django应用程序带有gunicorn,并且是new服务器配置的新手。我的应用程序有一个postgres后端,托管它的机器安装了Ubuntu14.04LTS。
我有理由怀疑我的nginx配置没有正确地将代理集头转发给Django应用程序。有什么办法让我看得到(例如印刷品吗?)主机,http_user_agent,remote_addr等转发,在linux命令行上测试我的直觉吗?
其次,如何检查我的Django应用程序是否收到了正确的转发IP?我能不能以某种方式print
/etc/nginx/sites-available/myproject:
server {
listen 80;
server_name example.cloudapp.net;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/mhb11/folder/myproject;
}
location / {
proxy_set_header Host $host;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/home/mhb11/folder/myproject/myproject.sock;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/mhb11/folder/myproject/templates/;
}
}发布于 2015-12-14 09:25:33
您所要做的就是在Django项目级别打印出request.META,以查看所有这些值都被设置为什么。如果您得到一个错误并将调试设置为True,这将自动发生(只要向下滚动,您将看到一个包含所有request.META值的大表)。
或者您可以从您的views.py中自己打印它,或者如果它不起作用,那么可以从您拥有的任何中间件中打印出来。您甚至可以为此编写自定义中间件。如果您需要进一步澄清这一点,请告诉我,我也可以给您提供基本的代码片段。
发布于 2021-07-04 13:58:30
这个问题在很久以前就已经发布了,但是由于我在需要帮助的时候登陆这里,下面是一些代码,我最终使用这些代码来实现帮助他人的相同目标。
def getClientIP(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[-1].strip()
else:
ip = request.META.get('REMOTE_ADDR')
return ip
https://stackoverflow.com/questions/34244217
复制相似问题