web-dev-qa-db-ja.com

既存のNGINXインストールで動的モジュールを有効にする方法

前書き

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_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

質問

  • ソースからNGINXがインストールされたシステムnotでモジュールをビルドしようとするのは問題ですか?
  • コマンドで.soファイルが生成されないのはなぜですか?
26
yoano

私も同じ質問をしましたが、@ 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設定を再読み込みします。

26
miyuru

これは、Amazon Linux 2016.09yum更新の実行後の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になります。これが当てはまる場合、Amazonの既存のyumリポジトリから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ファイルを指します)

5
Peter Jones

私は同じ問題を抱えていました、あなたはあなたのubuntuバージョンのhttp_geoip_module libをインストールする必要があります:

$ Sudo apt-get install nginx-module-geoip

2
vladiastudillo