Yeniden yazma yapılandırmasını bu şekilde düzgün bir şekilde izole etmek için yerleşik bir yol yoktur. Uygulayabileceğiniz üç yaklaşım vardır.
Harita modülü şunları içerir:
Harita modülü ayrı dosyadan eşleştirmeleri eklemenize olanak verir. Dosya değiştirildikten sonra Nginx'in yeniden yüklenmesi gerekir ve eşleme dosyasının sözdizimsel olarak doğru olması gerekir, ancak yapılabilecekleri sınırlar.
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;
İşlem öncesi yapılandırma
Birincisi, yönlendirmeleri tanımladığınız bir formattan nginx konfigürasyonuna dönüştüren bir komut dosyası yazmaktır. Örneğin, boşlukla ayrılmış yönlendirmelerin bir listesi verildiğinde:
/foo/(.*) /bar/$1
ve bir senaryo:
#!/bin/sh
while read SOURCE DEST; do
echo "rewrite $SOURCE $DEST permanent;"
done < redirects.txt > redirects.conf
Aşağıdaki yapılandırmayı oluşturmak için:
rewrite /foo/(.*) /bar/$1 permanent;
Daha sonra nginx -t
, yeniden yüklemeden önce geçerli olup olmadığını kontrol etmek için tüm yapılandırmayı çalıştırmak istersiniz .
Anında işleme
İkinci seçenek, yönlendirme yapılandırmanızı nginx'in kendisinde okumak ve işlemek için ngx_lua , ngx_perl veya ngx_js kullanmaktır. Örneğin, rewrite_by_lua
yönerge bir yeniden yazma oluşturmak için Lua kodunu çalıştırmanıza izin verir . Bununla birlikte, her istek için kodu yorumlayacağınız için performans konusunda dikkatli olmanız gerekir.