server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
#error_page 404 /404.html;
location / {
root /var/www/html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass phpfpm; # 上で定義したアップストリームを指定
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ \.php$
の~
は、正規表現を使用したパターンマッチングを行うことを意味しています。この場合、次のような内容を表しています。
location ~ \.php$
:location
ディレクティブは、指定されたパスに一致するリクエストに対して、特定の処理を行うために使用されます。~
は、正規表現を使用することを意味します。これにより、location
ブロックの条件として、指定したパターンに一致するすべてのリクエストをキャッチします。\.php$
は、.php
で終わるファイルパスに一致する正規表現です。\.
は、.
をリテラルとして扱うためにエスケープされています(通常、.
は正規表現で任意の1文字を表します)。php
はそのまま「php」という文字列に一致します。$
は、文字列の終わりを示します。つまり、php
で文字列が終わることを意味します。
この設定は、リクエストされたURLが.php
で終わる場合に、location
ブロック内の設定(例えば、FastCGIの設定など)を適用することを意味しています。これにより、PHPファイルに対するリクエストが適切に処理され、PHP-FPMなどのバックエンドに渡されます。