nginx 期望在哪里找到它的模块?

nginx 期望在哪里找到它的模块?

在哪里nginx期望找到其模块的二进制文件?例如,按照惯例,我应该在哪里安装模块nginx_ajp_module

答案1

模块路径将根据您使用的 Linux 发行版而有所不同。某些发行版(例如基于 Debian 的发行版)可能会将其放在奇怪的位置。

要查找系统上的模块路径,请运行nginx -V并在输出中查找--modules-path。例如:

nginx version: nginx/1.10.1
built by gcc 6.1.1 20160510 (Red Hat 6.1.1-2) (GCC) 
built with OpenSSL 1.0.2h-fips  3 May 2016 (running with OpenSSL 1.0.2j-fips  26 Sep 2016)
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules ...

您还应该知道,动态模块加载仅在 1.10 开发周期中引入。比这更早的模块设计为直接编译到 nginx 中,需要更新才能进行动态加载。您链接到的模块就是这样一个。请联系其开发人员以获取更多信息。

答案2

nginx -V--modules-path仅当 nginx 使用显式参数配置时才会显示配置标志。(即,如果您在编译 nginx 时--modules-path运行,您将在输出中看到。)如果在编译时未指定路径,则默认位置为。在我的 macOS 系统上,默认为,因此默认模块路径为;而 Ubuntu 17.10 将前缀整体式结构稍微分解一下,并期望模块位于中。./configure --modules-path=/path/to/modules--modules-path=/path/to/modulesnginx -V$NGX_PREFIX/modules$NGX_PREFIX/usr/local/nginx/usr/local/nginx/modules/usr/lib/nginx/modules

与许多 *nix 相关的东西一样,这里的配置优先于约定。您可能会发现最好的选择是自己编译 nginx,在运行时指定--prefix=and/oror标志。关于这个过程有一些很好的文档--modules-path=./configure这里这里

相关内容