Nginx总算支持动态模块了

artType02.jpg Nginx总算支持动态模块了html

2017-05-10 17:44:34nginx

标签:nginx 动态编译ide

Nginx做者Igor一直是很执拗的不用动态模块,没想到最终仍是妥协了,不过如今Nginx已是公司了,可能考虑的比较全面、比较商业,Tengine我记得很早就支持了,仍是易用性比较重要一些。测试

  最近发布的Nginx 1.9.11版本带来一个重要的新功能:动态模块,给咱们之后如何使用Nginx带来了巨大的影响。经过动态模块,你能够在运行时有有选择性的加载第三方或Nginx官方模块。新的实现方式经过API模块保持尽量的向后兼容。spa

  下一个版本的Nginx Plus(Nginx Plus R9)将基于动态模块新特性进行构建。咱们计划建立一个模块仓库,收集那些已经在Nginx Plus上经过测试和认证的第三方模块,使添加经常使用的扩展更加方便更加放心。若是你但愿将你的开源模块或者商业模块在咱们的模块仓库中,请经过连接与咱们的销售联系。操作系统

  在此以前,若是要给Nginx增长一个模块,须要将模块与源代码一块儿编译进Nginx二进制文件,并且无论你是否愿意,每次打开Nginx都会加载此模块。如此以来就很难在操做系统发行版的包中为每一个用户建立自定义的Nginx二进制文件。3d

  传统方式htm

  

  在动态模块的初版中,你仍然须要和Nginx二进制文件一块儿编译可选模块,可是会为每个动态加载模块建立一个独立的共享对象,经过Nginx配置文件中的命令来启用和禁用在运行时加载共享对象。对象

  动态模块blog

  

  动态加载Nginx模块

  在动态模块初版中支持如下Nginx模块、模块包的动态构建:

  GeoIP(ngx_http_geoip_module)

  Image-Filter (ngx_http_p_w_picpath_filter_module)

  Mail (包含全部的邮件相关模块: ngxmail{core, auth, imap, pop3, proxy, smtp}_module)

  Stream (包含全部的Stream相关模块: ngxstream{core, access, limit_conn, proxy, ssl, upstream}_module)

  XSLT (ngx_http_xslt_module)

  能够经过在标准的—with参数后追加=dynamic来生成动态可加载的共享对象,以下所示:

  ./configure --with-http_geoip_module=dynamic \

  --with-http_p_w_picpath_filter_module=dynamic \

  --with-mail=dynamic \

  --with-stream=dynamic \

  --with-http_xslt_module=dynamic

  当你编译安装Nginx 1.9.11时,会建立一个modules的子目录,用来存放动态加载模块共享对象的二进制文件,默认的路径为/usr/local/nginx/modules.

  要在运行时加载模块,在全局配置中使用load_module命令,指定动态模块共享文件的路径,并以引号括起来。当从新加载配置或重启Nginx的时候,模块就会被载入。路径能够是相对路径(本例中),也能够是完整路径。

  load_module "modules/ngx_http_geoip_module.so";

  load_module "modules/ngx_stream_module.so";

  要在运行时动态的“卸载”一个模块,能够注释或删掉相对应的load_module命令,并从新加载Nginx配置。若是有其余跟这个模块相关的命令,也请确保注释或者删除掉。

  转换第三方模块

  对于大多数的传统模块的开发者来讲,转化为动态加载只须要不多的工做,大多数状况下只须要修改一下源码的配置文件,部分模块可能须要稍微多一些的工做。Nginx 的Wiki中有模块转换指南和模块源配置文件格式的详细信息。

  要编译一个已经转换完成的第三方模块为动态模块,可经过新的--add-dynamic-module参数并指定模块的路径:

  ./configure --add-dynamic-module=/path/to/module/source

  和Nginx模块相同,动态模块的共享文件将会被安装到modules子目录中,你能够经过load_module命令来调用这个模块。

  咱们的开发者关系团队能够协助转换模块,请经过Nginx开发者邮件列表与咱们联系。

  动态模块展望

  在将来的版本中,咱们计划在已编译完成的Nginx二进制文件中增长模块,咱们也正在编写API模块的文档,当编写完成后将能够经过Nginx Wiki中免费查看。

  来吧,开始尝试动态模块吧。

  下载Nginx1.9.11(http://nginx.org/en/download.html)

本文出自http://mt.sohu.com/20160217/n437589645.shtml

相关文章
相关标签/搜索