특정 request_uri에 대한 add_header

특정 request_uri에 대한 add_header

앱이 모든 라우팅을 처리합니다. 따라서 다음 기본 구성 블록이 작동합니다.

location / {
    try_files $uri $uri/ /index.html;
}

문제는 방문자가 특정 URI를 요청할 때마다 사용자 정의 헤더를 추가하고 싶다는 것입니다. 예를 들어, /content. 음, 그건 다음과 같이 쉬울 것입니다:

location ~ ^/content {
   try_files $uri $uri/ /index.html;
   add_header X-CUSTOM-HEADER value;
}

하지만 그건 작동하지 않습니다. Nginx는 해당 헤더를 생성하지 않습니다. 그런 try_files다음콘텐츠/content블록이지만 루트 디렉터리에 "실제" 폴더가 없기 때문에 분명히 작동하지 않습니다 . 따라서 nginx는404 찾을 수 없음오류.

또한 해당 블록을 루트 위치 블록 내부로 이동하려고 했습니다. 작동하지 않습니다.


Apache에서는 다음을 사용하여 쉽게 수행할 수 있습니다.

<If "%{THE_REQUEST} =~ pattern">
    Header set HEADER value;
</If>

답변1

매핑된 변수를 사용하여 헤더를 설정할 수 있습니다. 변수가 빈 문자열로 설정되면 헤더가 자동으로 삭제됩니다.

예를 들어:

map $request_uri $myheader {
    ~^/content   a_value;
}
server {
    ...
    add_header X-CUSTOM-HEADER $myheader;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

관련 정보