NGINX 설정에서 두 위치에 대해 어떤 규칙을 적용합니까?
NGINX 설정에서 두 위치에 대해 어떤 규칙을 적용합니까?
나는 다음을 시도했다
server {
location /first/location/ | /second/location/ {
..
..
}
}
그러나 nginx reload는이 오류를 던졌습니다.
nginx: [emerg] invalid number of arguments in "location" directive**
시험
location ~ ^/(first/location|second/location)/ {
...
}
~수단은 URL에 대한 정규 사용합니다. ^첫 문자부터 확인 하는 수단. 이 /위치와 위치를 선택 합니다 /.
다른 옵션은 포함 된 파일을 사용하여 두 접두사 위치에서 규칙을 반복하는 것입니다. 접두사 위치는 구성에서 위치에 연속해서 다른 정규식 위치를 추가 할 때 접두사 위치를 사용하면 혼동을 위치 수 있습니다. 정규식 위치를 피하면 구성을 원활하게 확장하는 데 도움이됩니다.
server {
location /first/location/ {
include shared.conf;
}
location /second/location/ {
include shared.conf;
}
}
다음은 샘플 shared.conf입니다.
default_type text/plain;
return 200 "http_user_agent: $http_user_agent
remote_addr: $remote_addr
remote_port: $remote_port
scheme: $scheme
nginx_version: $nginx_version
";
정규식과 파일 모두 좋은 방법이며 자주 사용합니다. 그러나 또 다른 대안은 "명명 된 위치"를 사용하는 것인데,이 방법은 많은 상황에서 특히 더 복잡한 상황에서 유용한 접근 방식입니다. 공식 페이지 "만약 악의는" 일을 할 수있는 좋은 방법으로 다음과 같은 존재로 보여줍니다.
error_page 418 = @common_location;
location /first/location/ {
return 418;
}
location /second/location/ {
return 418;
}
location @common_location {
# The common configuration...
}
다양한 접근 방식에는 장단점이 있습니다. 정규적인 것의 가장 큰 장점은 대부분의 것입니다. 물론 원래 블록에서 변수를 설정하거나 사용하여 다른 방법으로 결과를 얻을 수 있습니다 . 정규식 접근 방식의 단점은 다양한 위치를 일치시키려는 경우 다루기 어려워 질 수있는 정규식 의 낮은 우선 순위는 위치를 일치시키는 방법에 적합하지 않을 수 있습니다. 어떤 경우에는 정규식에서.map
내가 알 수있는 한 파일을 포함하고 있다는 것을 포함하여 가장 큰 장점은 정확히 포함 할 수있는 부분에 대해 좀 더 융통성이있는 것입니다. 예를 들어 전체 위치 블록 일 필요는 없습니다. 그러나 이름이 지정된 위치보다 주관적으로 조금 복잡합니다.
또한 상황에서 사용할 수있는 관련 솔루션이 있습니다. 중첩 된 위치. 아이디어는 매우 일반적인 위치에서 시작하여 가능한 여러 일치 항목에 공통적 인 구성을 적용한 다음 일치하려는 여러 유형의 경로에 대해 별도의 중첩 된 위치를 있습니다. 예를 들어, 다음과 같은 작업을 수행하는 것이 유용 할 수 있습니다.
location /specialpages/ {
# some config
location /specialpages/static/ {
try_files $uri $uri/ =404;
}
location /specialpages/dynamic/ {
proxy_pass http://127.0.0.1;
}
}
이것은 짧지만이 많다는 접근 방식입니다.
location ~ (patternOne|patternTwo){ #rules etc. }
도시적인 위치 블록 / 규칙을 쉽게 소개 할 수 있습니다.
'IT' 카테고리의 다른 글
| 프로세스 ID Xcode에 첨부하지 (0) | 2020.08.05 |
|---|---|
| Spring Boot + JPA : 열 이름 주석이 무시되었습니다. (0) | 2020.08.05 |
| malloc을 사용할 때마다 경고 메시지가 있고 이유는 무엇입니까? (0) | 2020.08.05 |
| 프로그래밍 방식으로 활동을 다시 시작 / 재 작성 하시겠습니까? (0) | 2020.08.05 |
| 정렬 된 목록의 색인을 반환하는 방법? (0) | 2020.08.05 |