我有rails应用程序和nginx。
nginx配置的部分内容:
http {
...
proxy_cache_path /var/cache/nginx levels= keys_zone=cache:50m inactive=1d;
...
}
server {
...
location @rails {
proxy_pass http://rails_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_read_timeout 300m;
proxy_cache cache;
proxy_cache_valid 1h;
set $proxy_hide_header 'Set-Cookie';
proxy_hide_header $proxy_hide_header;
proxy_ignore_headers "Cache-Control" "Expires";
}
...
}
我有一个缓存跨域请求的问题。
直接打开url my_domain / data.js时会创建缓存文件。
当我使用ajax请求从my_domain / index.html打开url my_domain / data.js时,会创建缓存文件。
当我使用ajax请求从my_domain2 / index.html打开url my_domain / data.js时,缓存文件不。
在所有情况下,内容和http代码都可以。
答案 0 :(得分:1)
问题出在rails(不在nginx中)。 Rails为跨域请求添加“Set-Cookie”标头,即使已经设置了cookie(我不知道为什么,也许它是rails bug)。 所以我的解决方案是:
proxy_ignore_headers "Set-Cookie";