apache 与 php-fpm 几种处理方式
原文地址: apache 與 php-fpm 幾種處理方式
目錄
1.SetHandler
2.ProxyPassMatch
3.ProxyPass
<h3 id="1">1.SetHandler</h3>
ip:port配置
php-fpm配置
listen = 127.0.0.1:9000httpd配置
<FilesMatch \.php$> setHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>UDS配置
php-fpm配置
listen = /var/run/php-fpm/php-fpm.sockhttpd配置
<FilesMatch \.php$>SetHandler:unix:///var/run/php-fpm/php-fpm.sock|fcgi://php-fpmSetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost" # Apache 2.4.10設(shè)置 </FilesMatch><h3 id="2">2.ProxyPassMatch</h3>
需要在每個(gè) "VirtualHost" 里面加入
ip:port配置
<VirtualHost *:80> ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1 DirectoryIndex /index.php </VirtualHost>- ProxyPassMatch
只有滿足特定正則模式的內(nèi)容才會(huì)匹配并執(zhí)行此規(guī)則,這里的模式是,
^/(..php(/.)?)$
從網(wǎng)站(虛擬主機(jī) <VirtualHost > 的根目錄開始,匹配任何以 .php 結(jié)尾,或者在 .php 之后緊跟一個(gè) / 再跟別的內(nèi)容的路徑。
- ^ (caret) 和 $ (dollar)
標(biāo)志要匹配的路徑的開始和結(jié)束
- ( )
括號(hào)里的內(nèi)容可以用 $1 來(lái)表示,以方便后面引用它。
- fcgi://127.0.0.1:9000
通過(guò) mod_proxy_fcgi 來(lái)轉(zhuǎn)發(fā)的代理,使用 fastCGI 協(xié)議,轉(zhuǎn)到 PHP-FPM 監(jiān)聽的端口。
改變 IP 地址和/或端口號(hào)就可以要轉(zhuǎn)到的不同的 pool。用這個(gè)可以實(shí)現(xiàn)服務(wù)器分流、均衡等。
- /path/to/your/documentroot/
非常重要!必須與虛擬主機(jī)的路徑匹配,且必須是對(duì)應(yīng) php 文件在操作系統(tǒng)中的絕對(duì)路徑。否則會(huì)找不到文件(PHP Script File)。這也是 URL 地址重寫的目的所在:將 URL 地址轉(zhuǎn)換成 fcgi://127.0.0.1:9000 后面緊跟著的 php 文件絕對(duì)路徑。
- 可以從原始請(qǐng)求擴(kuò)展成整個(gè)請(qǐng)求路徑的變量,這里指代前面外圍 ( ) 里面匹配的那個(gè)路徑(uri)
我本機(jī)docker容器 httpd 和 php-fpm配置
我的php-fpm在138.38.38.110 上,配置將有所不同
關(guān)于docker-compose 安裝配置,看我docker compose 安裝配置nginx 反向代理 httpd php-fpm
<h3 id="3">3.ProxyPass</h3>
跟ProxyPassMatch 類似 ,需要在每個(gè) VirtualHost 中分別設(shè)置
<LocationMatch ^(.*\.php)$> ProxyPass fcgi://127.0.0.1:9000/path/to/webroot/ ProxyErrorOverride on </LocationMatch>最后感謝 http://cnzhx.net/blog/apache-...
總結(jié)
以上是生活随笔為你收集整理的apache 与 php-fpm 几种处理方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pandas删除dataframe列
- 下一篇: 【Leetcode】79.单词搜索