PHP-FPMと組み合わせる場合。
いくつか書き方があるというかシチュエーションによるというか
なんか面倒くさい(´・ω・`)
・前提 Directoryディレクティブ内には書けない(マニュアル直ってない) VirtualHostはVirturalHostごとに書く さらに必要ならLocationごとに書く
・最近の基本 2.4.7からSocket可。2.4.10から下記書式可。直感的にわかりやすくなった。 <FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/" #SetHandler "proxy:fcgi://127.0.0.1:9000/" </FilesMatch> <Proxy "fcgi://localhost/" enablereuse=Off> #<Proxy "fcgi://127.0.0.1:9000/" enablereuse=Off> # URIはSetHandlerのパイプ先と同値であること。任意の文字列でよい。 # enablereuse は 2.4.11 から。それ以前は disablereuse=On で同等。 # 規定値はreuseしないので書かなくてもよい。 # CentOS7のRPM版(2.4.6)は(dis|en)ablereuseを設定出来るが効かず、常にreuseしないぽい。 # reuseするとPHP側のプロセス数に余りがあっても2回目以降接続できなくなってしまったので # reuseしない方がよさそう。 </Proxy> <Proxy>ディレクティブはスキーマへの設定値を入れるためにある様子。
・基本 <LocationMatch "^/.*\.php$"> ProxyPass fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/ </LocationMatch> ドキュメントルートなどまで指定する。
・基本2 ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1 基本と同じ意味。
・Alias切ってる Alias /xxxxx /path/to/xxxxx ProxyPassMatch ^/xxxxx\/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/xxxxx/$1
など。socketはpatchをあてないとダメみたい。 2.4.7から可能。
2.4でAPIの変更があり、そのままではmakeが通らないので修正する。
mod_cidr_lookup.c:371: error: 'conn_rec' has no member named 'remote_addr' というエラー。 mod_cidr_lookup.c 371行目 sockaddr = r->connection->remote_addr; ↓ sockaddr = r->connection->client_addr;