1.14 以上的 Nginx 版本是否已弃用乘客?

Nei*_*eil 7 passenger nginx passenger-nginx

我将 nginx 从 version 更新1.141.18 (Ubuntu)on Ubuntu 18.04

这样做似乎打破了乘客。因此,我通过Passenger installation Ubuntu 18.04 说明卸载并尝试重新安装开源Passenger 版本。

我到了这一行:

sudo apt-get install -y libnginx-mod-http-passenger
Run Code Online (Sandbox Code Playgroud)

哪个抛出这个错误

libnginx-mod-http-passenger :取决于:nginx-common (< 1.14.1) 但要安装 1.18.0-3ubuntu1+bionic1

更新我也尝试使用企业版。按照企业版安装说明,我收到了类似的错误信息:

libnginx-mod-http-passenger-enterprise : 依赖: nginx-common (< 1.14.1) 但要安装 1.18.0-3ubuntu1+bionic1

我确实试图研究这个问题,我在 Phusion 的 GitHub 上发现了这个问题以及这个最近的问题。似乎大多数人正在做的是将他们的 nginx 版本回滚到1.14.

ane*_*yte 5

它并没有被弃用,不是。问题是您尝试安装的打包模块是为通过系统默认存储库分发的较旧的 Nginx 版本制作的。这出现在您提到的安装指南中:

此时,我们假设您已经从系统存储库安装了 Nginx。

这意味着假设您安装了特定版本的 Nginx(1.14.0在您的情况下),并为其构建了打包模块。新的乘客文件中强调了这一点:

如果您想使用我们打包的 Nginx 模块,则必须使用发行版提供的 Nginx 软件包。例如,如果您有 NGINX 设置提供的存储库,则您将需要编译与该 Nginx 兼容的动态模块

最后引用中的链接将带您了解如何编译动态乘客模块并在 Nginx 配置中启用它的指南。为了让答案简短,我不会重复整个过程,但一般方法是这样的:

  1. 获取 Nginx 源代码的乘客模块。
  2. 获取您已安装版本的 Nginx 源代码。
  3. 使用乘客模块编译 Nginx:
cd /path-to-nginx-source-dir
./configure --prefix=/opt/nginx \
  --with-some-configure-flag \
  --add-dynamic-module=$(passenger-config --nginx-addon-dir) \
  --add-module=/path-to-some-other-nginx-module
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
  1. 通过添加以下行来使 Nginx 加载模块nginx.conf
load_module modules/ngx_http_passenger_module.so;
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我宁愿选择“nginx-behind-nginx”方法而不是构建模块。也就是说,您拥有您喜欢的任何 Nginx 版本,但它作为另一个启用乘客的 Nginx(乘客独立)的反向代理运行。由于性能受到不明显的影响,这将更容易维护(安装、更新)。有关详细信息,请参阅本指南