我按照几个教程配置了 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。