Как включить динамический модуль с существующей установкой NGINX

введение

из nginx версии 1.9.11 и upwarts вводится новая функция: динамические модули.

с динамическими модулями вы можете дополнительно загружать отдельные общие объектные файлы во время выполнения как модули-как сторонние модули, так и некоторые собственные модули NGINX. (источник)

моя настройка и проблема

у меня установлен 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 и включить его в файле конфигурации.

что я пробовал так далеко!--5-->

Я тестировал это на другой машине (с той же конфигурацией, но не на производственной машине), но я не вижу . Команды которые я использовал:

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 не установлен не из исходников?
  • почему нет .Итак, файл, созданный моими командами?

3 ответов


у меня был тот же вопрос, и @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.


обнаружил, что это немного отличается от Amazon Linux 2016.09, Amazon Linux 2016.03 после выполнения обновления yum.

вы можете подтвердить это заранее, используя эту команду на своем экземпляре 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. Когда это верно, вы можете просто установить модуль nginx geoip из Существующее Yum-РЕПО Amazon через:

sudo yum install nginx-mod-http-geoip

затем свяжите модуль с вашим nginx.conf и размещение этой строки в основном контексте

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

(обратите внимание, что это тонко отличается от основного ответа - в aws у вас есть запись в nginx.conf указывает на другой *.conf файл, который затем указывает на )


У меня была та же проблема, вы должны установить http_geoip_module lib для вашей версии ubuntu с:

$ sudo apt-get install nginx-module-geoip