从NGINX 1.9.11版和upwarts中,引入了一项新功能:动态模块。
使用动态模块,您可以选择在运行时将单独的共享对象文件作为模块加载 - 包括第三方模块和一些本机NGINX模块。 (source)
我从主线安装了NGINX(目前为1.9.14),因此它可以使用动态模块。它还有我想要动态启用的模块:
nginx -V
nginx version: nginx/1.9.14
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules ... --with-http_geoip_module=dynamic ...
注意--with-http_geoip_module=dynamic
加载我需要的模块(动态)。
不幸的是,文档缺乏(一些细节),我无法设置。
我有一个现有的NGINX安装(不是来自源)。但据我所知,我只需要构建模块,将生成的模块文件放在正确的NGINX文件夹中,并在配置文件中启用它。
我在另一台机器上测试了这个(具有相同的配置,但不是生产机器),但我没有看到ngx_http_geoip_module.so
文件。
我使用的命令:
wget http://nginx.org/download/nginx-1.9.14.tar.gz
tar -xzf nginx-1.9.14.tar.gz
cd nginx-1.9.14/
./configure --with-http_geoip_module=dynamic
答案 0 :(得分:24)
我有同样的问题,@ vladiastudillo回答是我需要的缺失部分。
首先添加nginx稳定仓库:
sudo add-apt-repository ppa:nginx/stable
然后运行apt update:
sudo apt-get update
获取nginx geoip模块:
sudo apt-get install nginx-module-geoip
这将下载并加载模块到/usr/lib/nginx/modules
要加载nginx模块,
打开nginx.conf
:
sudo nano /etc/nginx/nginx.conf
在主要上下文中添加以下内容:
load_module "modules/ngx_http_geoip_module.so";
当您重新加载配置或重新启动nginx时,将加载该模块。
要动态“卸载”模块,请注释掉或删除其load_module
指令并重新加载nginx配置。
答案 1 :(得分:5)
在执行yum update后, Amazon Linux 2016.09 , Amazon Linux 2016.03上发现这略有不同。
您可以在ec2实例sudo yum search nginx-mod-http-geoip
上使用此命令提前确认,并且您会在回复中看到N/S matched: nginx-mod-http-geoip
条目,其详细信息为nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module
在这些情况下,已安装的nginx版本将为1.10.1
。如果是这样,您可以通过以下方式从亚马逊现有的yum repo中简单地安装nginx geoip模块:
sudo yum install nginx-mod-http-geoip
然后将模块与您的nginx.conf
相关联,并将此行放在主要上下文
include /usr/share/nginx/modules/mod-http-geoip.conf;
(注意这与主要答案略有不同 - 在aws中,你在nginx.conf中有一个条目指向另一个*.conf
文件,然后指向*.so
文件)
答案 2 :(得分:2)
我遇到了同样的问题,你必须为你的ubuntu版本安装http_geoip_module lib:
$ sudo apt-get install nginx-module-geoip
答案 3 :(得分:1)
如果您使用的是docker nginx:latest,则该模块已包含在映像中,因此您只需要这样指定load_module:
"/usr/lib/nginx/modules/ngx_http_geoip_module.so";
您还需要在nginx映射卷中创建一个geoip文件夹。 尽管数据库似乎不再更新或可用,并且不包含geoip2模块。因此,您很多人都需要Google ...