Bir nginx yapılandırma dosyasında uzun satırları bölme


15

Çöpü arka uca geçirmemek için bir locationdirektif için katı bir regex'im var. Şöyle görünüyor:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/...(more|restrict).ext {
    # other directives
}

Hattı 80 karaktere katlamak istiyorum, yapılandırmayı bölmenin bir yolu var mı? Aşağıdaki sözdizimi hatası verir, ancak aradığım bir şey:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/"\
            "...(more|restrict).ext" {
# results in a literal newline (%0A) being accepted
location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/
...(more|restrict).ext" {

Belgelerde ipuçları bulamadım ( http://wiki.nginx.org/ConfigNotation veya http://wiki.nginx.org/HttpCoreModule#location katlama satırları hakkında hiçbir şey söylemedi)


Dizenizi enterpolasyonlu birden çok parçadan oluşturabilir misiniz? (Hiçbir fikrim yok)
bsb

@bsb Konum ifadelerinde değişkenleri kullanamazsınız, bu nedenle hayır, değişkenleri ayarlayamaz ve dize enterpolasyonunu kullanamazsınız.
Lekensteyn

Yanıtlar:


7

Bunu yapabileceğini sanmıyorum.

nginx tüm beyaz boşluklara eşit davranır, bu yüzden dizenizi böyle ayırmaya çalışsanız ve nginx istediğiniz şekilde ayrıştırabilse bile, içinde bir sürü boşluk olan bir normal ifade ile dolanırsınız. t ne istiyorsun. Nginx ayrıştıramadıysa, bu büyük olasılıkla bir sözdizimi hatası alırsınız.

Sadece birkaç uzun çizgiyle yaşamak ya da daha az karmaşık düzenli ifadeler yapmak zorunda kalacaksınız.


Peki, eğer önde gelen alanlar olamazsa, bununla yaşayabilirim. Fakat bir yeni satır da tam anlamıyla yorumlanmış gibi görünüyor.
Lekensteyn

Gerçekten dünyanın sonu değil. :)
Michael Hampton

1
Şimdilik içimde bir location ".../[a-zA-Z0-9_...-]+$"desen izledi location ~ "\.pkg\.tar\.xz$". Cevabınız için teşekkürler, umarım bir gün daha iyi bir cevap ortaya çıkar;)
Lekensteyn
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.