apache 與 php-fpm 幾種處理方式

目錄

1.SetHandler
2.ProxyPassMatch
3.ProxyPass

1.SetHandler

在apache配置文件只部署一次
須要Apache 2.4.9以上才行php

ip:port配置

php-fpm配置

listen = 127.0.0.1:9000nginx

httpd配置

<FilesMatch .php$>
setHandler "proxy:fcgi://127.0.0.1:9000"
web

UDS配置

php-fpm配置

listen = /var/run/php-fpm/php-fpm.sockdocker

httpd配置

<FilesMatch .php$>
SetHandler:unix:///var/run/php-fpm/php-fpm.sock|fcgi://php-fpm
SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost" # Apache 2.4.10設置
apache

2.ProxyPassMatch

須要在每一個 「VirtualHost」 裏面加入服務器

ip:port配置

<VirtualHost :80>
ProxyPassMatch ^/(.
.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
DirectoryIndex /index.php
ide

ProxyPassMatch
只有知足特定正則模式的內容纔會匹配並執行此規則,這裏的模式是,
^/(..php(/.)?)$
從網站(虛擬主機 的根目錄開始,匹配任何以 .php 結尾,或者在 .php 以後緊跟一個 / 再跟別的內容的路徑。
^ (caret) 和 $ (dollar)
標誌要匹配的路徑的開始和結束
( )
括號裏的內容能夠用 $1 來表示,以方便後面引用它。
fcgi://127.0.0.1:9000
經過 mod_proxy_fcgi 來轉發的代理,使用 fastCGI 協議,轉到 PHP-FPM 監聽的端口。
改變 IP 地址和/或端口號就能夠要轉到的不一樣的 pool。用這個能夠實現服務器分流、均衡等。
/path/to/your/documentroot/
很是重要!必須與虛擬主機的路徑匹配,且必須是對應 php 文件在操做系統中的絕對路徑。不然會找不到文件(PHP Script File)。這也是 URL 地址重寫的目的所在:將 URL 地址轉換成 fcgi://127.0.0.1:9000 後面緊跟着的 php 文件絕對路徑。
能夠從原始請求擴展成整個請求路徑的變量,這裏指代前面外圍 ( ) 裏面匹配的那個路徑(uri)

我本機docker容器 httpd 和 php-fpm配置
個人php-fpm在138.38.38.110 上,配置將有所不一樣php-fpm

<VirtualHost :80>
ServerAdmin shenyi@com.cn
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost
<Directory "/usr/local/apache2/htdocs">
Options None
Require all granted

ProxyRequests Off
ProxyPassMatch ^/(.
.php)$ fcgi://138.38.38.110:9000/var/www/htm/$1
網站

關於docker-compose 安裝配置,看我docker compose 安裝配置nginx 反向代理 httpd php-fpmui

3.ProxyPass

跟ProxyPassMatch 相似 ,須要在每一個 VirtualHost 中分別設置

<LocationMatch ^(.*.php)$>
ProxyPass fcgi://127.0.0.1:9000/path/to/webroot/
ProxyErrorOverride on

最後感謝 http://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/#listen

來源http://www.taoluyuan.com/index.php/archives/37/#http://www.taoluyuan.com/index.php/archives/37/

相關文章
相關標籤/搜索