Apache mod_proxy_fcgi:每个虚拟主机一个代理工作器?

Apache mod_proxy_fcgi:每个虚拟主机一个代理工作器?

我一直在使用 Apache 2.4、mpm_event、mod_proxy_fcgi 和 php_fpm 设置服务器。

在 mod_proxy_fcgi 文档中(https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html) 中提到“出于性能原因,您将需要定义一个代表相同 fcgi:// 后端的工作程序。”

他们的例子:

<FilesMatch "\.php$">
# Note: The only part that varies is /path/to/app.sock
SetHandler  "proxy:unix:/path/to/app.sock|fcgi://localhost/"
</FilesMatch>

# Define a matching worker.
# The part that is matched to the SetHandler is the part that
# follows the pipe. If you need to distinguish, "localhost; can
# be anything unique.
<Proxy "fcgi://localhost/" enablereuse=on max=10>
</Proxy>

现在我的问题是;我为每个 Vhost 设置了一个 php_fpm 池,并为每个 vhost 指定了“SetHandler”,以便它使用适当的池,我是否也应该为每个 vhost 设置一个新的代理工作器?

示例 Vhost 1:

<FilesMatch "\.php$">
    SetHandler  "proxy:unix:/path/to/app1.sock|fcgi://app1/"
</FilesMatch>

<Proxy "fcgi://app1/" enablereuse=on max=10></Proxy>

示例 Vhost 2:

<FilesMatch "\.php$">
    SetHandler  "proxy:unix:/path/to/app2.sock|fcgi://app2/"
</FilesMatch>

<Proxy "fcgi://app2/" enablereuse=on max=10></Proxy>

或者在每个 SetHandler 中使用“fcgi://localhost/”是正确的方法吗?

答案1

我意识到我没有完全理解我所配置的内容。正如 mod_proxy 文档所述,Apache 以 2 个默认的 mod_proxy 工作程序开始,一个用于正向代理请求,一个用于反向代理请求。这些工作程序指的是 MPM 工作程序,这是我所不理解的。在我的例子中,它们是 mpm_event 工作程序,每个工作程序都按照 Apache 配置中的配置运行。

如果不首先考虑您的使用情况和工作器配置,则无法正确回答此问题。如果您认为一个 mpm 工作器可以处理所有网站,则没有理由不使用默认工作器 fcgi://localhost。如果您有一个大型网站并希望它拥有自己的 mpm 工作器,您需要做的就是指定一个新的代理并设置您的处理程序以使用它。

相关内容