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.
}

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;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.