如何在现有NGINX安装中启用动态模块 介绍

如何在现有NGINX安装中启用动态模块 介绍,nginx,configuration,geoip,Nginx,Configuration,Geoip,NGINX版本1.9.11和upwarts引入了一个新特性:动态模块使用动态模块,您可以选择在运行时作为模块加载单独的共享对象文件–包括第三方模块和一些本机NGINX模块。() 我的设置和问题 我已经从主线(目前为1.9.14)安装了NGINX,因此它能够使用动态模块。它还具有我希望动态启用的模块: nginx -V nginx version: nginx/1.9.14 built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) built with

NGINX版本1.9.11和upwarts引入了一个新特性:动态模块

使用动态模块,您可以选择在运行时作为模块加载单独的共享对象文件–包括第三方模块和一些本机NGINX模块。()

我的设置和问题 我已经从主线(目前为1.9.14)安装了NGINX,因此它能够使用动态模块。它还具有我希望动态启用的模块:

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\u geoip\u module=dynamic
,它(动态地)加载我需要的模块。 不幸的是,缺少文档(一些详细信息),我无法进行设置。
我有一个现有的NGINX安装(不是源代码)。但据我所知,我只需要构建模块,将生成的模块文件放在正确的NGINX文件夹中,并在配置文件中启用它

到目前为止我试过什么 我在另一台机器上测试了这一点(使用相同的配置,但不是生产机器),但我没有看到
ngx\u http\u geoip\u模块。
我使用的命令:

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
问题
  • 我试着在一个具有 NGINX是否已安装而不是来源
  • 为什么没有由我的命令生成的.so文件

我也遇到了同样的问题,您必须为您的ubuntu版本安装http\u geoip\u模块库,包括:


$sudo apt get install nginx module geoip

我有同样的问题,@vladiastudillo答案是我需要的缺失部分

首先添加nginx稳定回购:

sudo add-apt-repository ppa:nginx/stable
然后运行apt更新:

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配置。

执行yum更新后,在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\u 64:nginx http geoip module

在这些情况下,安装的nginx版本将为
1.10.1
。如果这是真的,您可以通过以下方式从Amazon现有的yum repo简单安装nginx geoip模块:

sudo yum安装nginx mod http geoip

然后将模块与您的
nginx.conf
关联,并将这一行放在主上下文中

include/usr/share/nginx/modules/mod-http-geoip.conf


(注意,这与主要答案略有不同-在aws中,nginx.conf中有一个条目指向另一个
*.conf
文件,然后指向
*.so
文件)

如果您使用的是docker nginx:最新版本,此模块已包含在图像中,因此您只需指定load\u模块:

“/usr/lib/nginx/modules/ngx\u http\u geoip\u module.so”

您还需要在nginx映射卷中创建geoip文件夹。
尽管数据库似乎不再更新或可用,并且geoip2模块也不包括在内。所以你需要谷歌…

我尝试了你的命令,但我得到了“读取软件包列表…完成构建依赖关系树读取状态信息…完成E:无法定位软件包nginx模块geoip”我需要从ppa重新安装nginx吗?或者Ubuntu提供的标准NGINX是否足够?如果NGINX内置了动态模块,则无需重新安装。要检查可用模块,请键入
nginx-V
并检查动态字符串。主上下文在哪里?@W.M。主上下文在nginx.conf文件中,没有任何括号。将其添加为第一行。是否有人因版本差异而出现问题,即您运行的版本是say 1.13,模块是根据版本是say 1.17编译的?我想我与您的问题类似,但我使用Vultr托管,当我运行
nginx-t
时,我得到:
nginx:[emerg]模块“/usr/lib64/nginx/modules/ngx_http_geoip_module.so”版本1012002而不是/usr/share/nginx/modules/mod http geoip.conf:1
当我尝试您的解决方案时,它只是说它已经安装好了!有什么想法吗?2018/07/09:37:14[emerg]9552#0:“加载模块”“在/usr/share/nginx/modules/mod http geoip.conf:1中,这里不允许使用指令。你知道我为什么会得到这个吗?我完全按照您的步骤操作。我需要帮助:
没有可用的nginx mod http geoip包。
?有人有这个问题吗?