• 天翼云增强型弹性负载均衡ELB转发流量至nginx后无法获取客户端真实ip


    如何获取来访者的真实IP?

    1、nginx需要安装http_realip_module模块

    wget http://nginx.org/download/nginx-1.17.0.tar.gz
    tar zxvf nginx-1.17.0.tar.gz
    cd nginx-1.17.0
    ./configure --user=www --group=www --prefix=/path/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
    make
    make install
    kill -USR2 `cat /path/server/nginx/logs/nginx.pid`
    kill -QUIT `cat /path/server/nginx/logs/ nginx.pid.oldbin`
    

    2、编辑nginx配置文件

    vi /path/server/nginx/conf/nginx.conf
    在http或者server处,需要添加的配置字段和信息:
    set_real_ip_from 100.125.0.0/16;
    real_ip_header X-Forwarded-For;
    

    添加配置字段如下所示

    [root@web_server_01 conf.d]# cat default.conf 
    server {
    
    
        listen      443 default ssl;
        server_name  localhost;
    
        set_real_ip_from 100.125.0.0/16;
        real_ip_header X-Forwarded-For;

    3、重启nginx

    nginx -s reload
    

    4、查看Nginx的访问日志,您可以获取真实的来访者IP。

    四层服务

    注意:针对四层(TCP协议)服务,需要配置TOA插件获取。需要配置TOA插件获取。

    操作场景

    ELB可以针对客户访问的业务为访问者提供个性化的管理策略,制定策略之前需要获取来访者的真实IP。TOA内核模块主要用来获取ELB转化过的访问者真实IP地址(仅支持IPv4),该插件安装在ELB后端服务器。

    当客户需要在操作系统中编译TOA内核模块时,可参考本文档进行配置。

    Linux内核版本为2.6.32和Linux内核版本为3.0以上的操作系统,在配置TOA内核模块的操作步骤上有所区别,具体操作请参照相应的操作步骤进行配置。

    前提条件
    编译内核模块开发环境需与当前内核版本开发环境一致。
    确保虚拟机可以访问开放源。
    如果是非root用户,需拥有sudo权限。
    操作步骤
    以下操作步骤是针对Linux内核版本为3.0以上的操作系统。
    准备编译环境。
    说明: 
    安装内核模块开发包的过程中,如果源里面找不到对应内核版本的安装包,需要自行去网上下载需要的安装包。
    
    以下是不同Linux发行版本的操作说明,请根据环境选择对应的方案。
    
    CentOS环境下的操作步骤。
    执行如下命令,安装gcc编译器。
    sudo yum install gcc
    
    执行如下命令,安装make工具。
    sudo yum install make
    
    执行如下命令,安装内核模块开发包,开发包头文件与库的版本需要与内核版本一致。
    sudo yum install kernel-devel-`uname -r`
    
    说明: 
    如果自带源里没有对应的内核开发包,可以到如下地址中去下载对应的rpm包。
    
    地址:https://mirror.netcologne.de/oracle-linux-repos/ol7_latest/getPackage/
    
    以3.10.0-693.11.1.el7.x86_64为例,下载后执行以下命令安装:
    
    rpm -ivh kernel-devel-3.10.0-693.11.1.el7.x86_64.rpm。
    

     2、编译内核模块

    编译内核模块
    使用git工具,执行如下命令,下载TOA内核模块源代码。
    git clone https://github.com/Huawei/TCP_option_address.git
    
    说明: 
    如果未安装git工具,请进入以下链接下载TOA模块源代码。
    
    https://github.com/Huawei/TCP_option_address
    
    执行如下命令,进入源码目录,编译模块。
    cd src
    
    make
    
    编译过程未提示warning或者error,说明编译成功,检查当前目录下是否已经生成toa.ko文件。
    
    说明: 
    如果报错提示“config_retpoline=y but not supported by the compiler, Compiler update recommended”,表明gcc版本过老,建议将gcc升级为较新版本
    
    加载内核模块
    执行如下命令,加载内核模块。
    sudo insmod toa.ko
    
    执行如下命令,验证模块加载情况,查看内核输出信息。
    dmesg | grep TOA
    
    若提示信息包含“TOA: toa loaded”,说明内核模块加载成功。
    
    说明: 
    CoreOS在容器中编译完内核模块后,需要将内核模块复制到宿主系统,然后在宿主系统中加载内核模块。由于编译内核模块的容器和宿主系统共享/lib/modules目录,可以在容器中将内核模块复制到该目录下,以供宿主系统使用。
    

     推荐常用rpm包搜索网站:http://rpm.pbone.net/

    这时候再次查看nginx日志,则可以正常获取到真实访问的ip地址

    参考:https://support.huaweicloud.com/elb_faq/elb_faq_0090.html

  • 相关阅读:
    ZOJ-3725 Painting Storages DP
    ZOJ-3720 Magnet Darts 计算几何,概率
    ZOJ-3721 Final Exam Arrangement 贪心
    POJ-2096 Collecting Bugs 概率DP
    [转]数据输入加速
    POJ-3468 A Simple Problem with Integers Splay Tree区间练习
    HDU-4419 Colourful Rectangle 矩形多面积并
    POJ-1177 Picture 矩形覆盖周长并
    HDU-1255 覆盖的面积 覆盖的矩形面积并
    POJ-1151 Atlantis 矩形面积并
  • 原文地址:https://www.cnblogs.com/caidingyu/p/12101395.html
Copyright © 2020-2023  润新知