Değişkenleri nginx'ten nasıl alabilirim?


13

Nginx conf konumu:

location ~/photos/resize/(\d+)/(\d+) {
    # Here var1=(\d+), var2=(\d+)
}

Değişkenleri nginx'ten nasıl alabilirim?

Yanıtlar:


17

Normal ifade, sahip olduğu her yerde olduğu gibi çalışır.

location ~/photos/resize/(\d+)/(\d+) {
  # use $1 for the first \d+ and $2 for the second, and so on.
}

Nginx wiki'deki örneklere bakmak da yardımcı olabilir, http://wiki.nginx.org/Configuration


12

Önceki yanıtlara ek olarak, regex yakalanan grupların adlarını daha sonra yönlendirilmek üzere daha kolay ayarlayabilirsiniz;

location ~/photos/resize/(?<width>(\d+))/(?<height>(\d+)) {
  # so here you can use the $width and the $height variables
}

bkz. NGINX: kullanım örneği için $ remote_user öğesinin konumun ilk bölümüne eşit olup olmadığını kontrol edin .


Başka bir normal ifade ve normal ifade yakalama gruplarına sahip başka bir iç içe konum da varsa bu görünüşte gereklidir . Çünkü diğer konumun içinde, $1 $2 $3vb. İç regex'in üzerine yazılan iç içe regex değerlerine atıfta bulunacaktır $1 $2 .... Bir alias /$1de dış regex, kullanacağı $1gelen olası sonuçlar dosyasında-bulunamadı regex.
KajMagnus

1
Sanırım bunun (?<width>\d+)yerine yazabilirsiniz (?<width>(\d+))ya da bunun için başka bir neden var mıdır - belki de $1iyi olmak için $width?
Cameron Kerr

2

Bunu deneyebilirsiniz:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}
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.