nginx 动态模块如何工作?

nginx 动态模块如何工作?

我想知道动态模块实际上是如何与 Nginx 的自定义安装一起工作的。

  • 它们已经编译好了吗?
  • 在这种情况下,是否意味着工作进程在子进程中使用它们?
  • 如果没有,它们如何添加到核心二进制文件中?
  • 为什么我们不将它们包含在核心二进制文件中以提高性能?

请帮帮我,我很困惑。

答案1

它们已经编译好了吗?

这取决于包创建者是否已经编译并包含动态模块。

在这种情况下,是否意味着工作进程在子进程中使用它们?

我不太明白你的意思。动态模块中的代码与 nginx 中的其他代码一样。只是加载机制不同。

如果没有,它们如何添加到核心二进制文件中?

它们在启动时加载到内存中并挂入请求处理流程。它们不会被添加到核心二进制文件中。

为什么我们不将它们包含在核心二进制文件中以提高性能?

我认为动态模块和静态模块之间的性能没有任何差异。

将所有模块都包含在核心二进制文件中是没有意义的,因为对大多数人来说,这些代码都是死代码。加载时,死代码仍会占用内存。

此外,发布过程会非常痛苦。除了核心模块之外,您还需要决定在发布中包含其他模块的哪些更改。这会增加发布所需的时间。

相关内容