harici bir kaynaktan nginx'teki yönlendirmeleri korumak


15

Pazarlama departmanımıza yönlendirmelerini kendi başlarına sürdürme fırsatı vermek için durumdayım. Şimdiye kadar bilgileri BT departmanına aktardılar ve biz de onlar için sakladık nginx.conf.

Bu adamlardan bazıları IIS'de ve hatta Apache'de yeniden yönlendirmelere oldukça aşinadır, ancak nginx yapılandırmasına doğrudan erişim vermek için bir seçenek yoktur.

Görüyorum, .htaccesserişebileceğim dosyalar için nginx desteği yok ve ayrıca nginx'in içerdiği bir conf dosyasına yazma erişimi vermemeyi tercih ediyorum. Pazarlamamızın nginx kurulumumuzu birkaç saat içinde bozacağını umuyorum ...

Yük dengeleyicimizin kalbine erişmelerine izin vermeden güvenli bir olasılık var mı?

Yanıtlar:


24

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_luayö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.


1
Harita modülü, yönlendirmeleri yapılandırmak için biraz kısıtlı bir yol sağlar.
mgorven

1
Harita yöntemi çok umut verici görünüyor! Bu yüzden, harita dosyasını korumak için basit bir web sitesi yazmaya başlayacağım. Teşekkür ederim!
Sascha

2
Ne yazık ki, bu noktada (2014 sonbahar) ngx_js projesine en son iki yıl önce dokunuldu. ngx_lua çok aktif ve bakımlıdır.
Ville

Şimdi js alt kümesinin kullanılmasına izin veren nginScript (alfa kalitesi) kullanılabilir.
lifeisfoo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.