そのような書き換え構成を適切に分離する方法は組み込まれていません。あなたが取ることができる3つのアプローチがあります。
マップモジュールが含まれます
マップモジュールを使用すると、別のファイルからのマッピングを含めることができます。ファイルを変更した後もNginxをリロードする必要があり、マッピングファイルは構文的に正しい必要がありますが、実行できる内容が制限されます。
nginx.conf
:
map $uri $new {
include /etc/nginx/marketing.map;
}
server {
...
if ($new) {
rewrite ^ $new redirect;
}
...
}
marketing.map
:
/about /company/about-us;
~^/people/(?<person>.*)$ /company/people/$person;
前処理の構成
最初の方法は、定義したフォーマットからリダイレクトをnginx構成に変換するスクリプトを作成することです。たとえば、スペースで区切られたリダイレクトのリストが与えられた場合:
/foo/(.*) /bar/$1
およびスクリプト:
#!/bin/sh
while read SOURCE DEST; do
echo "rewrite $SOURCE $DEST permanent;"
done < redirects.txt > redirects.conf
次の構成を形成します。
rewrite /foo/(.*) /bar/$1 permanent;
次にnginx -t
、構成全体を実行して、再ロードする前に構成が有効であることを確認します。
オンザフライ処理
2番目のオプションは、ngx_lua、ngx_perlまたはngx_jsを使用して、nginx自体でリダイレクト設定の読み取りと処理を実装することです。たとえば、rewrite_by_lua
ディレクティブを使用すると、Luaコードを実行して書き換えを作成できます。ただし、リクエストごとにコードを解釈するため、パフォーマンスに注意する必要があります。