🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### Nginx追加模块 备注:网上有同学说只make不make install,会覆盖,但是Nginx在make install时,会判断文件是否存在,如果存在则不会进行创建和覆盖。 #### 查看Nginx 编译参数 /app/nginx/sbin/nginx -V #### 追加第三方模块 安装Nginx echo模块 ```shell cd /opt/ git clone https://github.com/openresty/echo-nginx-module.git@1.8.x cd /opt/nginx-1.8.1 ./configure --prefix=/app/nginx-1.8.1 --user=nginx --group=nginx --add-module=/opt/1.8.x/ make && make install ``` #### 追加自身模块 安装RealIP模块,在有CDN或多层反向代理的情况下,获取用户真实IP ```shell cd /opt/nginx-1.8.1 ./configure --prefix=/app/nginx-1.8.1 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module make && make install ``` ### Nginx(Web)获取客户端真实IP - 安装RealIP模块,在有CDN或多层反向代理的情况下,获取用户真实IP #### 基础架构 L1-Nginx(proxy)-->L2-Nginx(proxy)-->Nginx(Web) #### 增加realip模块 ```shell cd /opt/nginx-1.8.1 ./configure --prefix=/app/nginx-1.8.1 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module make && make install ``` #### Server模块中配置 ```shell set_real_ip_from 10.0.0.0/24; set_real_ip_from 192.168.0.0/24; real_ip_header X-Forwarded-For; real_ip_recursive on; ``` - set_real_ip_from:告诉nginx,192.168.0.109是我们的反向代服务器不是真实的用户IP - real_ip_header:告诉nginx真正的用户IP是存在X-Forwarded-For请求头中 - 当real_ip_recursive为off时,nginx会把real_ip_header指定的HTTP头中的最后一个IP当成真实IP - 当real_ip_recursive为on时,nginx会把real_ip_header指定的HTTP头中的最后一个不是信任服务器的IP当成真实IP #### 三种在CDN环境下获取用户IP方法总结 - CDN自定义header头 优点:获取到最真实的用户IP地址,用户绝对不可能伪装IP Ucloud为例https://docs.ucloud.cn/storage_cdn/ucdn/faq.html 缺点:需要CDN厂商提供 - 程序获取forwarded-for头 优点:可以获取到用户的IP地址 缺点:程序需要改动,以及用户IP有可能是伪装的 - 使用realip获取 优点:程序不需要改动,直接使用remote_addr即可获取IP地址 缺点:ip地址有可能被伪装,而且需要知道所有CDN节点的ip地址或者ip段