나는 이 질문을 쓰기 전에 답을 찾으려고 시간을 보냈습니다.
location
내 nginx 구성 파일에는 다음과 같은 여러 블록이 있습니다 .
location ~ ^/(doc|img|bla|foo)/metadata/$ { ... }
location ~ ^/(doc|img|bla|foo)/deleted/$ { ... }
location ~ ^/(doc|img|bla|foo)/something/$ { ... }
그래서 반복되는 정규 표현식을 섹션에서 설정한 변수로 리팩토링하는 것이 좋은 생각이라고 생각했습니다 server
(또한 나중에 추가해야 한다는 것을 알고 있기 때문입니다).
server {
set $my_regex doc|img|blah|foo;
# I also tried this one:
set $my_regex "doc|img|blah|foo";
....
}
그런 다음 위치 블록 내에서 재사용합니다.
# this doesn't have any effect
location ~ ^/($my_regex)/metadata/$ { ... }
# this one neither
location ~ ^/(\$my_regex)/deleted/$ { ... }
# and this one neither
location ~ ^/(${my_regex})/something/$ { ... }
어떤 아이디어? 감사해요!
답변1
일치 에 변수를 사용할 방법이 없습니다 location
.
원한다면 뭔가 잘못하고 있는 것일 수도 있습니다. 이 경우 중첩 위치를 시도해 볼 수 있습니다.
답변2
이쪽에서 확인해 주세요링크NGINX에서 말했듯이선적 서류 비치
The PCRE library supports named captures using the following syntax:
?<name> Perl 5.10 compatible syntax, supported since PCRE-7.0
?'name' Perl 5.10 compatible syntax, supported since PCRE-7.0
?P<name> Python compatible syntax, supported since PCRE-4.0
명명된 캡처는 PCRE의 기능이며 버전마다 사용할 수 있는 구문이 다릅니다. 사용하는 구문에 대해 ? 최소한 PCRE 7.0이 있어야 합니다.