何回かやったnginxの設定について。
特にサブディレクトリなどに設定したいなどの時に悩みますね・・・
locationディレクティブ
マッチするようなURLパターンの時に使います。
1 2 3 |
location /images/{ root /var/www/img } |
上記の場合たとえば、
http://example.com/images/log.pngというURLがアクセスされた場合、/var/www/img/images/logo.pngにアクセスされることになります。
locationディレクティブには各種、正規表現なども使えます。
またディレクティブを複数書いた場合、
記述が複雑なケースが優先されます(location / よりもlocation /imageの方が優先されます)
また正規表現を書いたケースが優先されます
ちなみにaliasを使い、下記のように書くと
1 2 3 |
location /images/{ alias /var/www/img/ } |
http://example.com/images/log.pngというURLがアクセスされた場合、/var/www/img/logo.pngにアクセスされることになります。
rootの場合、root+locationになりますが、aliasに指定した場合、ディレクトリをそのまま読み込んでくるという違います。
try_filesディレクティブ
パラメーターに指定したファイルパスを前から順番にチェックし、ファイルがあればそのファイルの内容をレスポンスとして応答します。どのファイルも指定していなかった場合、最後に指定した転送先URLに内部リダイレクトをします。
An error has occurred. Please try again later. |
上記の場合、まず最初に$uri、その後に、 $uri/ 最後に、sample/index.phpを見に行くということになります。
fastcgiがらみのディレクティブ
1 2 3 4 5 6 |
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
FASTCGIに渡すパラメーターです。
fastcgi_pass サーバへのリクエストのプロキシです。PHPを使っている場合はphp-fpmのパスになることが一般的です。
fastcgi_index $fastcgi_script_nameの値で、スラッシュで終わるURIの後に追加されるファイル名を設定します。
SCRIPT_FILENAME サーバー側に送られる環境変数になります。ほとんどの場合で、スクリプトのファイルパスになります。
include fastcgi_params 設定ファイルを読み込む部分になります。
参考リンク
nginx $document_root$fastcgi_script_name と $request_filename の違い
https://mogile.web.fc2.com/nginx_wiki/start/topics/examples/phpfcgi/
参考ポートフォリオ