Як отримати змінні з розташування в nginx?


13

Розташування від nginx conf:

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

Як отримати змінні з розташування в nginx?

Відповіді:


17

Регекс працює майже як і в будь-якому іншому місці, яке його має.

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

Перегляд прикладів на wiki-файлі nginx може також допомогти, http://wiki.nginx.org/Configuration


12

Окрім попередніх відповідей, ви також можете встановити назви захоплених регулярними виразками груп, щоб їх було простіше згадати пізніше;

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

див. NGINX: перевірте, чи $ remote_user дорівнює першій частині місця для прикладу використання.


Це, мабуть, необхідно, якщо є також інше вкладене місце з іншою групою захоплення регулярних виразів та регулярних виразів. Тому що всередині цього іншого місця розташування $1 $2 $3тощо буде посилатися на значення з вкладеного регулярного виразу, перезаписуючи $1 $2 ...у зовнішній регулярний вираз. alias /$1У зовнішньому регулярний вираз буде використовувати $1з внутрішньої регулярних виразів, що , ймовірно , призводить до файлу-ні-знайдено.
KajMagnus

1
Я думаю, що ви можете просто написати (?<width>\d+)замість цього (?<width>(\d+)), чи є якась інша причина цього - можливо, також вийти $1так само $width?
Камерон Керр

2

Ви можете спробувати це:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.