一个非常高效和简单的django中间件,可以从可信的负载平衡器发送的报头获取真实的ip地址

django-behind-lb的Python项目详细描述


在lb后面是一个非常简单和高效的django中间件 当项目运行在可信负载之后时的客户端IP地址 平衡器。

它允许指定激活中间件的路径,例如 //a/specific/path。路径必须在变量中指定 BEHIND_LB_PATH在您的settings.py中。

它与任何发送公共远程地址的负载平衡器一起工作 标题中固定的相对位置(第一,第二,…,最后)。 例如,amazon elb把它放在最后一个位置,google compute 倒数第二个负载平衡器。位置必须settings.BEHIND_LB_POSITION中指定。

快速启动

  1. 安装软件包:

    pip install django-behind-lb

  2. 只需将django-behind-lb添加到INSTALLED_APPS设置中,如下所示:

    MIDDLEWARE_CLASSES = (
        'behind_lb.middleware.BehindLB',
        ...
    
  3. 在settings.py中配置路径和位置:

    BEHIND_LB_PATH = "/"
    BEHIND_LB_POSITION = -2 # For Google Compute Engine
    
  4. 尝试读取视图类中的默认request.META['REMOTE_ADDR']。它 应该读取真正的客户端IP。

位置选项

BEHIND_LB_PATH值指定实际IP地址在 X-Forwarded-For header,其中0是第一个(或“左”),1是第二个,-2是 倒数第二个位置,最后一个是-1。示例:

BEHIND_LB_POSITION =  0 # First

BEHIND_LB_POSITION = -2 # Next to last, for Google Compute Engine LB

BEHIND_LB_POSITION = -1 # Last, for Amazon EC2 LB

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
SpringWeb中的java更新/通知其他用户   java Lambda性能测试   java Bukkit插件:空白符号   java在按下按钮后改变彩色正方形的大小   javajavac相当于“D”?   java序列化接口   属性无法从属性文件返回值   java我应该使用什么查询来使用Jsoup从html页面提取符号?   java Android Studio项目结构问题   JAVA方法和返回值/公共变量(基础)   java将NativeQuery映射到POJO   java如何在下面的程序中消除NumberFormatException?   在java中获取链表与数组中的对象   java Android Firebase将用户发送到聊天室