django+vue+nginx+frp搭建漫画网站之获取访客真实ip(二)

地址:http://www.iewoai.com/

1、背景

最近听室友说,他网站有监控访客的ip,并通过钉钉通知的服务。于是我在想,我为什么不给漫画网站加这个服务呢,说整就整,首先得获取到真实ip。

2、问题

网站是部署在内网服务器上的,通过frp内网穿透到外网。因此无论是nginx还是django的访问日志里都是127.0.0.1的内网ip,因此首先得解决这个问题。

在这里插入图片描述

在这里插入图片描述

3、步骤

1、安装realip

参考nginx

frpc.ini配置proxy_protocol_version = v2后,nginx始终报400 的错误,未解决,因此换一种方式获取真实ip

2、nginx配置

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;

3、django代码

这个时候真实ip在HTTP_X_FORWARDED_FOR里,参考[2]中的代码,修改成如下:

def get_ip_address(request):
    ip = request.META.get('HTTP_X_REAL_IP', '')
    if not ip and ip != '127.0.0.1':
        ip = request.META.get('HTTP_X_FORWARDED_FOR', '')
    if not ip:
        ip = request.META.get('REMOTE_ADDR', '') 
    for i in ip.split(','):
        client_ip = i.strip()
        if client_ip != '127.0.0.1':
            return client_ip
    return ''

参考资料:

  1. 使用 Linux deploy 搭建属于自己的Nginx+PHP-Web服务器,FRP内网穿透,可获取用户真实IP https://blog.csdn.net/skyxc233/article/details/105666136

  2. FRP内网穿透 + Nginx代理 + 获取真实IP https://blog.csdn.net/qq_36624899/article/details/113247823

  3. FRP内网穿透 + Nginx代理 + 获取真实IP
    https://blog.poryoung.cn/?p=1132

  4. nginx反向代理后应用程序如何获取客户端真实IP?
    https://blog.csdn.net/it_0101/article/details/78390700

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值