科技匠|nginx常见模块headers-more,set-misc( 三 )

  • headers-more-nginx模块的指令都是区分大小写的 , 所以要注意区分字母的大小写 。
  • nginx module : set-misc-nginx第三方模块set-misc-nginx在rewrite阶段使用 , 它功能丰富 , 具有设置变量、URL转义、生成随机数、防止SQL注入、解码与编码等多项功能 。
    install and overview该模块地址为
    安装时直接编译即可 , 如下所示:
    科技匠|nginx常见模块headers-more,set-miscgit clone git clone cd nginx-1.19.2/./configure --prefix=/usr/local/nginx --add-module=../ngx_devel_kit --add-module=../set-misc-nginx-modulemake && make install
    科技匠|nginx常见模块headers-more,set-misc注意:很多第三方模块在编译时都需要加入ngx_devel_kit模块 , 因为ngx_devel_kit扩展了Nginx服务器的核心功能 , 很多第三方模块都是基于它实现的 。
    科技匠|nginx常见模块headers-more,set-misc如果不使用此模块 , 而直接用Nginx进行配置会比较麻烦 。
    下面的其他功能指令由于使用的机会不会很多;尽做展示;需要时实际再查即可;
    2、防止SQL注入
    指令:set_quote_sql_str
    3、字符串非转义和转义
    指令:set_unescape_uri
    4、基于键值的集群分片
    Nginx通过第三方模块可以和数据库进行交互 , 这使API 服务更容易部署和开发 。 当需要对数据库中的数据分片读取时 , 可以使用指令set_hashed_upstream进行配置 。
    指令:set_hashed_upstream
    5、base编码
    指令:set_encode_base32
    6、md5编码
    指令:set_md5
    7、生成随机数
    指令:set_random
    指令:set_secure_random_alphanum
    指令:set_secure_random_lcalpha
    8、本地时间的输出
    指令:set_local_today
    9、实战经验
    • 关于指令set_if_empty要尽量减少if语句的使用 , 而且使用set_if_empty能够提升Nginx的可读性 。
    • 关于指令set_quote_sql_str一旦让Nginx和数据库直接交互 , 要确保set_quote_sql_str指令的存在 , 以防止SQL注入 。
    • 关于指令set_unescape_uri和set_escape_uri在处理数据时 , 如URL , 需要确保转义和非转义的统一性 , 避免出现前面的代码做了转义 , 但后面的某些环节却使用非转义数据的情况 , 因为这样会导致在匹配和对比时出现数据不一致的情况 。
    • 关于指令set_hashed_upstream该类型的分片比较简单 , 不涉及高可用 。 如果某个upstream服务全部“挂掉” , 则会报错 。 因此 , 在设计分片时要考虑足够多的可能性 。
    nginx module : ngx_http_image_filter_moduleinstall and overviewNginx可以使用ngx_http_image_filter_module对图片进行切割裁剪 , 这为动态处理图片提供了支持 。
    安装方式:只需在编译Nginx时 , 添加--with-http_image_filter_module即可 。
    依赖库:libgd(gddevel) , 在CentOS系统下通过yum安装即可(推荐使用最新版本) 。
    【科技匠|nginx常见模块headers-more,set-misc】具体的使用;在有需要时 , 可以查阅对应官网说明和使用手册;


    推荐阅读