我在我的服务器上安装了Nginx以及PHP-FPM,在制作新网站并尝试确保尽可能快地使用Google Chrome的审核工具时.在一些错误中,它给了我这个.
Leverage proxy caching (10)The following publicly cacheable resources contain a Set-cookieheader. This security vulnerability can cause cookies to be sharedby multiple users.
所以我想知道的是,为了不为此域设置Set-cookie标头,我必须添加到以下语句中.然后,我将获取该信息并将其应用于CSS,img,ect子域,以便浏览器可以正确缓存它.
server { gzip on; gzip_static on; Listen 80; server_name img.domain.tld; root /www/domain/tld; index index.PHP index.htm index.HTML; location ~* \.(gif|png|jpg|jpeg|svg)${ expires 30d; } include PHP_fpm;}
请在Grumpy之前跟进请求获取更多信息.
这是我用于PHP FPM的配置文件,用于img子域.
PHP-FPM包括
location ~ \.PHP${ fastcgi_pass unix:/tmp/PHP.socket; fastcgi_param SCRIPT_filename $document_root$fastcgi_script_name; include fastcgi_params;}
如您所见,它应该仅在位置以PHP文件扩展名结束时激活.
有趣的是,我还有一个CSS文件被报告为具有set-cookie标头,并且由CSS子域服务,其中没有包含PHP-fpm …这里是该部分的配置文件.
server { gzip_static on; Listen 80; server_name CSS.domain.tld; root /www/domain/CSS; index index.htm index.HTML; location ~* \.(CSS)${ expires 7d; }}
文件是……
Leverage proxy caching (5) The following publicly cacheable resources contain a Set-cookie header. This security vulnerability can cause cookies to be shared by multiple users.
> style.CSS(由CSS.domain.tld提供)
> 2009EMSWeeklogoSmall.jpg(由domain.tld提供)
> EMS FOUR.jpg(由domain.tld提供)
> get_adobe_reader.png(由img.domain.tld提供)
> dhs-ntas-badge-small.jpg(由dhs.gov提供)
domain.tld服务器配置如下所示.
server { gzip on; gzip_static on; Listen 80; server_name .domain.tld; root /www/domain/www; index index.PHP index.htm index.HTML; location ~* \.(htm|HTML|ico|icns|hqx|gif|png|svg|jpg|jpeg|svg)${ expires 1d; } include PHP_fpm;}解决方法 标识要缓存的资源是非默认行为.因此,Chrome导致此通知的任何内容都是您指定要缓存的对象.
缓存指令(在本例中为public)可以通过两种方式设置.
>你的Nginx告诉它缓存.
> PHP告诉它缓存,然后由Nginx转发.
根据你的上面的Nginx配置,并忽略整个include PHP_fpm;,除非你的图像(gif,jpg,png)以某种方式被执行,否则没有什么会建议#1.
PHP也有可能有这样的缓存指令.在这种情况下,这是你应该从核心修复而不是尝试修补工作的东西.
但是在这两种情况下,您还可以输入一个奇怪的场景.如果找不到您的图像,它将尝试查找404页面.如果404是直接或间接的可执行文件(PHP),那么它可以携带一个set cookie命令.如果404指令也告诉它被缓存,这将是一个不好的行为.所以,一定要检查一下.同样也明显适用于任何其他错误代码.
鉴于目前的信息,这是我所能猜到的.如果发现任何错误以及Nginx和/或PHP-fpm的完整配置,您可能需要跟进有关哪个确切项目导致Chrome提供此类消息的其他信息.
我试着查看完整的http标头,看看是否有任何cookie的迹象或传递的任何自定义信息.
来自OP网站的示例响应标头导致警告.
telnet img.nassauems.net 80Trying 205.186.162.66...Connected to img.nassauems.net.Escape character is '^]'.GET http://img.nassauems.net/buttons/get_adobe_reader.png http/1.1Host: img.nassauems.nethttp/1.1 200 OKServer: Nginx/1.2.4Date: Sat,12 Jan 2013 20:24:19 GMTContent-Type: image/pngContent-Length: 2597Last-ModifIEd: Fri,28 Dec 2012 08:30:57 GMTConnection: keep-aliveExpires: Mon,11 Feb 2013 20:24:19 GMTCache-Control: max-age=2592000Accept-Ranges: bytes
来自我的网站的示例响应标头,不会引起警告.
telnet www.mysite.com 80Trying 123.123.123.123...Connected to www.mysite.com.Escape character is '^]'.GET http://www.mysite.com/test.png http/1.1Host: www.mysite.comhttp/1.1 200 OKServer: Nginx/1.0.12Date: Sat,12 Jan 2013 20:21:43 GMTContent-Type: image/pngContent-Length: 207Last-ModifIEd: Sat,27 Aug 2011 04:42:30 GMTConnection: keep-aliveExpires: Sun,13 Jan 2013 20:21:43 GMTCache-Control: max-age=86400Accept-Ranges: bytes
您看得出来差别吗?我不能!
我将此标记为Chrome Audit的错误.
总结以上是内存溢出为你收集整理的通过删除Set-Cookie标头来利用nginx的代理缓存全部内容,希望文章能够帮你解决通过删除Set-Cookie标头来利用nginx的代理缓存所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)