nginx -> 쿠키(조건, if, then, else)를 기반으로 try_files를 사용하여 다양한 파일을 제공합니다.

nginx -> 쿠키(조건, if, then, else)를 기반으로 try_files를 사용하여 다양한 파일을 제공합니다.

다음과 같이 nginx 서버를 구성해야 합니다. 사용자에게 특정 쿠키가 있어서 서버가 파일을 보내야 하고, 그렇지 않으면 서버가 다른 쿠키를 보내야 합니다. 관련 기사를 많이 읽었지만 도움이 되지 않았습니다. 또한 try_files회의 시 몇 가지 문제가 있다는 것을 알고 있지만 location if이를 해결하는 방법은...

작동해야 하지만 실제로는 작동하지 않는 예가 있습니다.

upstream site {
    server localhost:4321;
}

server {

    listen *:1234;
    server_name site.com;
    root /path/www/;

    ssl on;
    ssl_certificate /path/ssl.crt;
    ssl_certificate_key /path/ssl.key;

    location = / {

        set $variable /path/index.html;

        if ($http_cookie ~* "someCookie=someValue(?:;|$)") {
            set $index_file /path2/index.html;
        }

        rewrite .* $index_file break;

        try_files  $uri/index.html $uri.html $uri @site;
    }

}

답변1

다음과 같이 시도해 보세요.

if ($cookie_myCookieNameIsBlaBlaBla ~* "cookieValueThatIWannaMatch") {
   # my logic in here
}

nginx의 문서에 따르면 if는 악하므로 주의하세요.

더 많은 정보:

시아!

답변2

최선의 해결책은 확실하지 않지만 이런 식으로 수행했지만 작동합니다.

location @rewrite {
    if ($http_cookie ~* "someCookie=someValue(?:;|$)") {
        rewrite .* /path1/file1.html last;
    }
    rewrite .* /path2/file2.html last;
}

location = / {
    try_files $uri/index.html $uri.html $uri @rewrite;
}

관련 정보