2014-12-09 5 views
0

처음으로 nginx를 설정하려고합니다. 다음 문제는 해결하고 싶습니다.쿠키가있는 라우팅 된 트래픽 Nginx

두 버전의 백엔드 v1 및 v2가 있습니다. 동일한 서버 '127.0.0.1:3000로 라우팅 할 수있다

교통 트루 "/"(자바 스크립트 + 소켓)

사용자 "/ V2"('127.0.0.1:3000 'proxy_pass)로 라우팅 ; ' 쿠키를보고.

는 Heres는 내 문제는 쿠키가없는 존재 않으므로 (404)는

어떤 제안

을 반환됩니다?

map $cookie_version $site_version { 
    default  ""; 
    "v1" "version=v1;Domain=localhost;Path=/"; 
    "v2" "version=v2;Domain=localhost;Path=/"; 
} 

server {  
    listen 8081; 
    server_name localhost; 

location/{ 
    if ($cookie_version ~* "v1") { 
     proxy_pass http://127.0.0.1:8080; 
    }  
    if ($cookie_version ~* "v2") { 
     proxy_pass http://127.0.0.1:3000; 
    } 
} 

location /v1 { 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $host; 
    proxy_http_version 1.1; 

    set $cookie_version "v1"; 
    add_header Set-Cookie $site_version; 

    rewrite ^/v1(.*) /$1 break; 

    proxy_pass http://127.0.0.1:8080; 
} 
location /v2 { 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $host; 
    proxy_http_version 1.1; 

    set $cookie_version "v2"; 
    add_header Set-Cookie $site_version; 

    rewrite ^/v2(.*) /$1 break; 

    proxy_pass http://127.0.0.1:3000; 
} 
} 

답변

0

처음으로 악의적 인 경우가 왜 http://wiki.nginx.org/IfIsEvil인지 읽어보십시오. 대신 map을 사용하십시오. 내 제안 :

map $cookie_version $mybackend { 
    default "127.0.0.1:3000"; 
    "v1" "127.0.0.1:8080"; 
    "v2" "127.0.0.1:3000"; 
} 
... 
location/{ 
    proxy_pass http://$mybackend; 
} 
... 
location ~ ^/(?<cver>v[12])/ { 
    ... 
    add_header Set-Cookie "version=$cver;Domain=localhost;Path=/"; 
    rewrite ^/v[12]/(.*)$ /$1 redirect; 
} 
+0

아, 감사합니다 ...하지만 난 이해가 안되는 어떤 이유로 쿠키를 저장합니다. 어떤 아이디어? – Karl

+0

이 쿠키 양식 서버를 받으십니까? 브라우저의 개발 도구로 확인하십시오. 아마도 localhost 도메인 때문에 localhost.com 같은 것을 시도해보십시오. (hosts 파일을 편집하십시오) –

+0

감사합니다! – Karl