Open1

nginx

KumaoKumao

locationについて

パスがどちらも同じ場所を指していたとしても、正規表現がある方が優先される
以下はBが優先される。

location /example/page.html {
    [設定A]
}

location ~ ^/example/ {
    [設定B]
}

alias

locationのURIで指定したパスをディレクトリに反映する。

location /s/ {
    alias /var/www/s/html/;
}
location ~ ^/s/(.+\.(?:gif|jpg|png)$) {
    alias /var/www/s/images/$1;
}

ファイルパス

設定の一番右に、"/"で始まるファイル名のパスを書くと、ファイルが存在しなかったときにフォールバックするURIのパスになります。次のように記述すると、index.htmlやindex.phpが存在しなかったら、/index.phpにリダイレクトします。

location /example/ {
    index index.html index.php /index.php;
}

try_files

try_filesディレクティブには存在をチェックするファイルやディレクトリと存在しなかったときにリダイレクトするURIのパスを指定します。

## URIのパスに対するファイル(静的コンテンツ)が存在すれば、そのファイル返す。
## 存在しなければ、動的コンテンツとして@webappに内部リダイレクトする。
location / {
    error_page 404 = @webapp;
}

## 拡張子がphpであるファイルに対して処理する。
location ~ \.php$ {
    fastcgi_pass    unix:/var/run/php-fpm.sock;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
}

## 動的コンテンツとして処理する。
location @webapp {
    fastcgi_pass    unix:/var/run/php-fpm.sock;
    fastcgi_param   SCRIPT_FILENAME /var/www/html/index.php;
    include /etc/nginx/fastcgi_params;
}

internal

internalディレクティブは、それを記述したロケーションが内部リダイレクトのように内部からのリクエストのためのみに使われることを宣言します。外部から直接アクセスすることはできません。
次の例では、404エラーが発生したときに/404.htmlに内部リダイレクトします。リダイレクト先のロケーションでは外部から直接このページのURIを指定してアクセスさせたくはないので、internalを記述します。

error_page 404 /404.html;
location = /404.html {
    internal;
}

【参考】
https://heartbeats.jp/hbblog/2012/04/nginx05.html