nginx反向代理cookie转发

kee*_*ahs 6 nginx heroku node.js docker reactjs

我有 3 个 Heroku 应用程序

  1. 前端反应
  2. 后端节点
  3. 反向代理nginx

  1. 对反向代理/api/?(.*) 的调用被转发到后端
  2. 其余对反向代理的所有调用都转发到前端

代码/etc/nginx/conf.d/default.conf

upstream frontend {
    server $FRONTEND_URL;
}

upstream backend {
    server $BACKEND_URL;
}

server {
    listen $PORT;

    location / {
        proxy_pass http://frontend;
        proxy_set_header Host $FRONTEND_URL;
    }

    location /api {
        rewrite /api/(.*) /$1 break;
        proxy_pass http://backend;
        proxy_set_header Host $BACKEND_URL;
    }

}
Run Code Online (Sandbox Code Playgroud)

问题

我正在使用 cookie 进行身份验证,但后端设置的 cookie 没有被“转发”

我的代码


现在它可以工作了,我做了一些更改

  1. secure: false在我的节点应用程序中更改为对我来说是这样(稍后可能会添加 tls 证书)
  2. @mariolu 建议的修复

现在看起来像

location /api {
    rewrite /api/(.*) /$1 break;
    proxy_pass http://backend;
    proxy_set_header Host $BACKEND_URL;
    proxy_set_header Cookie $http_cookie;
}
Run Code Online (Sandbox Code Playgroud)
  1. app.set("trust proxy", true);

mar*_*olu 7

你需要添加

proxy_set_header Cookie $http_cookie;
Run Code Online (Sandbox Code Playgroud)

在位置配置中。变量$http_cookie是用户请求cookie。