有时候,在做项目开发的过程中,需要新的第三方模块,但是nginx已经装好了,并且有很多正式的配置信息,此时就不能重新安装nginx服务器了,否则会把以前的安装信息和配置信息全部覆盖,此时我们就需要进行动态安装第三方模块。下面我们以添加 ngx_http_geoip_module为例进行演示。
-
查看当前nginx服务器已经支持的模块
-
查看nginx服务器当前有哪些模块
带有图中红框标识的是动态模块,如果想使用需要手动编译。
-
切换到nginx的源码包目录
配置相关项:
此时报错信息表示需要安装geoip安装所依赖的库:
安装动态模块geoip所依赖的库
然后再执行上述的配置命令,如下图所示:
然后执行以下命令进行编译和安装:
make
make install
执行完毕以后,会在nginx的安装目录下有一个新建的modules目录,如下图所示:
因为GeoIP是基于MaxMind 提供了数据库文件来读取地域信息的所以需要下载ip的地域文件。 这个数据库是二进制的,不能用文本编辑器打开,需要上面的 GeoIP 库来读取,上述安装geoip所依赖的库的时候,会在/usr/share/GeoIP目录下生成相应的数据库文件。
上述完成以后以后需要配置相应的nginx配置文件,如下表:
全局配置块 | load_module modules/ngx_http_geoip_module.so; |
http的全局模块 | geoip_country /usr/share/GeoIP/GeoIP.dat; geoip_city /usr/share/GeoIP/GeoIPCity.dat; |
server中添加location | location /myip { default_type text/plain; return 200 "$remote_addr $geoip_country_name $geoip_country_code"; } |
-
重启nginx服务
-
在浏览器中访问http://51yimutian.com/myip
如果想查看更多,更关注公众号:我要一幕天