Node.js 使用cookies Nginx的路由流量

Node.js 使用cookies Nginx的路由流量,node.js,cookies,nginx,Node.js,Cookies,Nginx,我第一次尝试设置nginx。 我有以下问题要解决 我有两个版本的后端v1和v2 用户被路由到/v2代理_pass“127.0.0.1:3000;” tru/javascript+套接字流量已路由到同一服务器“127.0.0.1:3000;”看着饼干 这是我的问题,cookie不存在,因此将返回404 有什么建议吗 map $cookie_version $site_version { default ""; "v1" "version=v1;Domain=localho

我第一次尝试设置nginx。 我有以下问题要解决

我有两个版本的后端v1和v2

用户被路由到/v2代理_pass“127.0.0.1:3000;”

tru/javascript+套接字流量已路由到同一服务器“127.0.0.1:3000;”看着饼干

这是我的问题,cookie不存在,因此将返回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;
 }
}

首先,阅读为什么如果是邪恶的。用地图代替。 我的建议是:

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

啊,谢谢。。。但是我没有保存饼干,因为我不明白的原因。有什么想法吗?你收到这个cookie表单服务器了吗?使用浏览器的开发工具进行检查。您可能会遇到麻烦,因为localhost域,请尝试类似于localhost.com的方法为其编辑主机文件