特定の拡張子をphpなどで処理する
css や js だけじゃなく 画像などをphpで処理したい。Apacheだと addhandler / sethandler で出来るアレ。nginx でもやろうかなと。
画像のリクエストログやリサイズをWebサーバーでやってるとかったるいので、phpで処理してキャッシュ制御すれば楽だよね。セッションチェックとかさ。
nginx での設定例
拡張子php と zip を php-fpmに飛ばしている例。
location ~ \.(php|zip)$ { include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME /var/www/example.com/public/info.php$fastcgi_script_name; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/path/to/php-fpm.sock; }
ポイント
SCRIPT_FILENAME
の指定 。
php の場合は SCRIPT_FILENAME を使ってPATHINFOで実行するファイルを指定することが出来て、これをphp-fpm経由にしてあげれば、任意のファイルを好きなファイルで処理できる。便利。
PATHINFOで取得した場合
$_SERVER['ORIG_SCRIPT_FILENAME'] $_SERVER['ORIG_SCRIPT_NAME']
リクエストされたファイル名
$_SERVER['PATH_TRANSLATED']