IT

NGINX 설정에서 두 위치에 대해 어떤 규칙을 적용합니까?

lottoking 2020. 8. 5. 07:36
반응형

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

도시적인 위치 블록 / 규칙을 쉽게 소개 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/35320674/how-can-i-have-same-rule-for-two-locations-in-nginx-config

반응형