配置 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 池配置中,我嘗試用主機和連接埠(也可以僅用連接埠)取代監聽指令,但我似乎無法讓它工作。如何將 PHP FPM 配置為透過 TCP 而不是 unix 套接字可用?我現在沒有理由想做這個,只是為了學習。

最後。這是問這個問題的正確「堆疊」網站嗎?


編輯說我找到了少量文檔來自阿帕契。範例部分中的最後一個範例討論了|fcgi://something在強制反向代理請求的上下文中使用 ,但我真的不明白這一點。

答案1

該文件清楚地說明了為什麼應該包含它,即使它不是強制性的:

出於效能原因,您需要定義一個代表相同fcgi://後端的工作人員。這種形式的好處是它允許在伺服器中進行 URI 到檔案名稱的正常映射,並將本機檔案系統結果傳遞到後端。當FastCGI這樣配置時,伺服器可以計算出最準確的PATH_INFO。

相關內容