配置 PHP FPM 时 Apache SetHandler 指令的语法

配置 PHP FPM 时 Apache SetHandler 指令的语法

我按照几个教程配置了 Apache 以使用 PHP FPM。但是,我不明白该SetHandler行代码的作用是什么,而且根据我的一些实验,它似乎是多余的。我有以下代码:

SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"

|fcgi://localhost无论是否存在,这都有效。

在 Plesk 配置等各个地方,我看到部分内容fcgi://localhost被替换为fcgi://127.0.0.1:9000

的用途是什么|fcgi://localhost?它是多余的吗?可以删除吗?

分隔 sock 和 fcgi 的管道是否sock|fcgi应解释为“或”,这意味着如果不存在 unix 套接字,则使用 tcp 连接?

在我的 FPM 池配置中,我尝试用主机和端口替换 listen 指令,也尝试用端口替换,但似乎无法使其工作。如何配置 PHP FPM 以通过 TCP 而不是 unix 套接字使用?我目前没有理由想这样做,只是为了学习。

最后。这是提出这个问题的正确“堆栈”站点吗?


编辑说我发现了一个少量文档来自 Apache。示例部分中的最后一个例子讨论了|fcgi://something在强制反向代理请求的上下文中使用,但我真的不明白这一点。

答案1

文档清楚地说明了为什么即使它不是强制性的也应该包括它:

出于性能原因,您需要定义一个代表相同fcgi://后端的工作程序。此形式的好处是它允许在服务器中正常进行 URI 到文件名的映射,并将本地文件系统结果传递给后端。当 FastCGI 以这种方式配置时,服务器可以计算出最准确的 PATH_INFO。

相关内容