首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查nginx反向代理(Django应用程序)所禁止的代理集头

检查nginx反向代理(Django应用程序)所禁止的代理集头
EN

Stack Overflow用户
提问于 2015-12-12 19:49:23
回答 2查看 3K关注 0票数 1

我正在使用nginx作为反向代理,我的Django应用程序带有gunicorn,并且是new服务器配置的新手。我的应用程序有一个postgres后端,托管它的机器安装了Ubuntu14.04LTS。

我有理由怀疑我的nginx配置没有正确地将代理集头转发给Django应用程序。有什么办法让我看得到(例如印刷品吗?)主机,http_user_agent,remote_addr等转发,在linux命令行上测试我的直觉吗?

其次,如何检查我的Django应用程序是否收到了正确的转发IP?我能不能以某种方式print

/etc/nginx/sites-available/myproject:

代码语言:javascript
复制
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/;
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-14 09:25:33

您所要做的就是在Django项目级别打印出request.META,以查看所有这些值都被设置为什么。如果您得到一个错误并将调试设置为True,这将自动发生(只要向下滚动,您将看到一个包含所有request.META值的大表)。

或者您可以从您的views.py中自己打印它,或者如果它不起作用,那么可以从您拥有的任何中间件中打印出来。您甚至可以为此编写自定义中间件。如果您需要进一步澄清这一点,请告诉我,我也可以给您提供基本的代码片段。

票数 0
EN

Stack Overflow用户

发布于 2021-07-04 13:58:30

这个问题在很久以前就已经发布了,但是由于我在需要帮助的时候登陆这里,下面是一些代码,我最终使用这些代码来实现帮助他人的相同目标。

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34244217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档