request.META无法获取到IP

在做小站反向代理遇到的问题,在调试模式的时候使用reqeust.META.get("REMOTE_ADDR")是没有问题,但是到生产模式的时候,为什么就出问题了呢?

来自:request.META无法获取到IP

调试模式下获取真实IP

request.META.get("REMOTE_ADDR") # 可以获取到本地IP
request.META.get("HTTP_X_FORWARDED_FOR")  # 当IP使用代理的时候,可以通过这种方式获取到代理的IP地址

生产模式下如何获取

生产模式下,获取request.META.get("HTTP_X_FORWARDED_FOR")的时候会得到None,同时获取到request.META.get("REMOTE_ADDR")的时候只会得到空字符串,这是因为当你使用nginx反向代理的时候,需要设置header返回:

## nginx配置添加
location / {
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
## 同时脚本里重写获取方式
if request.META.get('HTTP_X_FORWARDED_FOR'):
            ip = request.META.get("HTTP_X_FORWARDED_FOR")
        else:
            ip = request.META.get("HTTP_X_REAL_IP")

 

另外添加以下前两天遇到的新增配置


## nginx避免nobody启动,产生502的错误
user root;  # 直接在最外面添加

## nginx隐藏版本号,有效防止服务器被对应漏洞攻破
http{
        server_tokens off; #避免服务器版本号泄漏
}

## nginx添加压缩功能
http{
        gzip on;  #开启压缩
        gzip_http_version 1.1; #对应压缩协议
        gzip_disable 'MSIE[1-6]'; #拒绝ie1-6版本压缩
        gzip_types text/css text/javascript application/javascript image/jpeg image/png image/gif; #压缩对象
        gzip_buffers 4 8k; # 压缩使用的服务器内存 是4k - 8k
        gzip_min_length 1k; #压缩最小的大小
        gzip_comp_level 9; # 压缩级别
        gzip_vary on; #添加压缩头
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值