在哪里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/modules
nginx -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
这里和这里。