Nginx和跨子域Cookie

TLDR:如何在后台应用服务器的子域之间共享cookie,我不能使用nginx作为代理进行“configuration” – 一些神奇的proxy_ *组合?

龙卷风web服务器运行在“127.0.0.1:9999/ipython”,我不能configuration(它运行作为ipython笔记本服务器的一部分)。 我使用nginx代理从“www.mysite.com”至127.0.0.1:9999 成功 (httpstream量至less)。

但是,后端应用程序的一部分需要Websockets。 因为我正在使用CloudFlare,所以我必须为Websockets使用单独的域(“Websockets目前仅适用于Enterprise客户…所有其他客户…应在其CloudFlare DNS中为Websockets创build一个子域并禁用CloudFlare代理” )。 我正在使用“ws.mysite.com”。

当用户在“https:// www.mysite.com”login时,一个cookie由龙卷风网站服务器设置为“www.mysite.com”(我似乎无法configuration它,否则我只是设置它到“.mysite.com”)。 当应用程序的websocket部分启动时,它向“wss:// ws.mysite.com”发送一个请求,但是由于Cookie设置为不同的域(“www.mysite.com”),所以无法进行authentication。

是否有可能nginx“欺骗”的域名,所以龙卷风web服务器注册“.mysite.com”? proxy_cookie_domain似乎不工作,因为我期望…我应该硬代码“proxy_set_header主机”?

我正在考虑类似于…的nginx conf

upstream ipython_server { server 127.0.0.1:8888; } server { listen 443; server_name www.mysite.com; ssl_certificate cert.crt; ssl_certificate_key cert.key; ssl on; # **** THIS DOESN'T WORK ??? **** proxy_cookie_domain www.mysite.com .mysite.com; location /ipython/static { proxy_pass https://ipython_server$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /ipython/api/sessions { proxy_pass https://ipython_server$request_uri; proxy_set_header Host $host; proxy_set_header Origin ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /ipython { proxy_pass https://ipython_server$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { try_files $uri $uri/ =404; } } server { listen 443; server_name ws.azampagl.com; ssl_certificate cert.crt; ssl_certificate_key cert.key; ssl on; # **** THIS DOESN'T WORK ??? **** proxy_cookie_domain ws.mysite.com .mysite.com; # This is the websocket location location /ipython/api/kernels/ { proxy_pass https://ipython_server$request_uri; proxy_redirect off; proxy_http_version 1.1; chunked_transfer_encoding off; proxy_buffering off; proxy_read_timeout 86400; proxy_set_header Host $host; proxy_set_header Origin ""; proxy_set_header Upgrade websocket; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_set_header X-Forwarded-Proto $scheme; } } 

我一直在看nginx lua模块? 它看起来像你可以设置Cookie域,但它看起来hackish …

非常感谢您的帮助!

(注意:我在技术上可以访问龙卷风configuration,但是如何为服务器设置“cookie域”没有文档。

 c.NotebookApp.tornado_settings = {'cookie_domain????':'.mysite.com'}