NginxのURLの書き換え(rewrite)の設定と情報の詳細解説
Nginxでは、URLリライトはリクエストURLを変更して行われます。URLリライトは、ユーザーのリクエストを異なるURLにリダイレクトしたり、URLのパラメーターを変更したり、URLの実際のパスを隠したりするために使用することができます。
NginxのURLリライトの設定は、主にlocationディレクティブとrewriteディレクティブに関係しています。
以下是一个简单的Nginx URL 修正配置示例:
server {
listen 80;
server_name example.com;
location / {
rewrite ^/old-url$ /new-url permanent;
rewrite ^/user/(\d+)$ /profile?id=$1 last;
}
}
上記の設定では、”example.com”という名前の仮想ホストを定義し、リッスンポートを80に指定しました。locationディレクティブでは、URLをリライトするためにrewriteディレクティブを使用しています。
最初のリライト命令は、ユーザーの/old-urlへのリクエストを/new-urlに永続的に301リダイレクトすることを示しています。
第2つのrewriteディレクティブは、ユーザーの/user/123へのリクエストを/profile?id=123に書き換えます。lastパラメーターを使用して、現在のrewriteディレクティブの処理を停止し、次の一致するlocationブロックにリクエストを転送します。
rewriteディレクティブ以外に、URLパラメータを変更するためにsetディレクティブを使用することもできます。例えば:
server {
listen 80;
server_name example.com;
location / {
set $id 123;
rewrite ^/user$ /profile?id=$id last;
}
}
上記の設定では、set命令を使って$id変数を123に設定し、その後、rewrite命令を使ってユーザーの/userへのリクエストを/profile?id=123に書き換えます。
NginxのURLリライトは正規表現に基づいていますので、URLを一致させるために正規表現を使用し、それをリライト規則で変更します。したがって、URLリライトを設定する際には、正規表現の使用と規則の作成に注意する必要があります。
また、Nginxはrewriteディレクティブで使用できるいくつかの特殊な変数を提供しています。たとえば、$ argsはリクエストのパラメータ部分を表し、$ uriはリクエストのURI部分を表し、$ request_uriは元のリクエストのURI部分を表します。
NginxのURLリライト設定の要点は、locationディレクティブとrewriteディレクティブに関連しています。rewriteルールを設定することで、ユーザーのリクエストURLの変更やリダイレクトを実現できます。URLリライトを設定する際には、正規表現の使用とルールの作成、特殊変数の使用に注意する必要があります。