昨天在整合某些系统的nginx配置时,出现了当使用nginx cache时无法返回304响应的情况,出问题的响应头:
Content-Type:text/html; charset=gb2312
Date:Mon, 05 Jan 2015 01:58:05 GMT
Expires:Mon, 05 Jan 15 02:03:00 GMT
Last-Modified:Mon, 05 Jan 15 01:58:00 GMT
对于这个日期格式 nginx是不认识的,nginx能识别的日期格式:
no = 0,
rfc822, /* Tue, 10 Nov 2002 23:50:13 */
rfc850, /* Tuesday, 10-Dec-02 23:50:13 */
isoc /* Tue Dec 10 23:50:13 2002 */
这是因为Expires和Last-Modified是通过如下方式设置的:
header('Last-Modified: ' . gmdate('D, d M y H:i:s', $now_time) . ' GMT');
header('Expires: ' . gmdate('D, d M y H:i:s', $now_time + $max_age) . ' GMT');
这样生成的年是两位而不是四位,把小写y改成大写Y即可。
不过对于如上内容,浏览器和CDN端能正常识别该日期,并能正确的返回304。
另外在测试时发现,在使用Chrome浏览器时:
【1】假设第一次请求时响应内容是:
Status Code:200 OK
Age:20
Cache-Control:max-age=300
Connection:keep-alive
Content-Encoding:gzip
Content-Length:14412
Content-Type:text/html; charset=gbk
Date:Mon, 05 Jan 2015 02:10:56 GMT
Expires:Mon, 05 Jan 2015 02:15:55 GMT
Last-Modified:Mon, 05 Jan 2015 02:10:55 GMT
Vary:Accept-Encoding
【2】当按F5时,会发现返回了304:
Status Code:304 Not Modified
Cache-Control:max-age=300
Connection:keep-alive
Date:Mon, 05 Jan 2015 02:12:11 GMT
Expires:Mon, 05 Jan 2015 02:15:55 GMT
Vary:Accept-Encoding
【3】如果再次按F5时,会发现
Status Code:200 OK
Age:4
Cache-Control:max-age=300
Connection:keep-alive
Content-Encoding:gzip
Content-Length:14412
Content-Type:text/html; charset=gbk
Date:Mon, 05 Jan 2015 02:10:56 GMT
Expires:Mon, 05 Jan 2015 02:15:55 GMT
Last-Modified:Mon, 05 Jan 2015 02:10:55 GMT
Vary:Accept-Encoding
如果【2】时再带上Last-Modified,那么【3】还是304, 目前测试几个浏览器中只有Chrome是这种情况。
如果那种预售秒杀商品,是会频繁刷新的。
相关推荐
所以在这里用到了nginx的proxy_redirect指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值 以下是截取nginx的一小段配置文档 server { listen 80; server_name www.boke.com; l
此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法
本篇文章主要介绍了Nginx启用proxy_cache缓存的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
nginx_cache_purge,用于清楚nginx缓存的小工具
Nginx在vhost里的配置站点,通过proxy转发到动态域名的具体配置。 反向代理,动态域名 ,Proxy
尝试使用Nginx进行反向代理过程中出现如下错误: 代码如下: nginx: [emerg] “proxy_cache_path” directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思“proxy_cache_path指令不被允许”...
nginx_tcp_proxy_module-master.zip
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|<method> [from all|<ip> [.....
docker-letsencrypt-nginx-proxy-companion-examples, 结合 Docker gen和 letsencrypt Nginx 代理伙伴的示例 docker-letsencrypt-nginx-proxy-companion-examples这个库是使用 nginx代理插件, docker gen和 docker-...
一个用于nginx-proxy的轻量级协同容器,它能够自动创建/更新LetsEncrypt 证书
nginx-redis-proxy 是 Nginx 用来使用 Redis 作为缓存引擎的扩展模块。 标签:nginx redis
今天小编就为大家分享一篇关于nginx proxy_cache批量清除缓存的脚本介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
使用docker-gen的Docker容器的自动化nginx代理
fastdfs-5.05.tar.gz : FastDFS安装主文件包 libfastcommon-master.zip: FastDFS文件系统依赖包 nginx-1.8.1.tar.gz:nginx安装包 fastdfs-nginx-module_v1.16.tar.gz: nginx下...ngx_cache_purge-2.1.tar.gz:缓存
nginx同时做web跟cache服务器
顾名思义,proxy_buffer 是用于 proxy 模式的缓冲功能。本文介绍其基本用法。 buffer 是什么 buffer ,即缓冲区,它在 Nginx 上发挥的作用就是 启用一个缓冲区,先在这个缓冲区内进行存储,再把数据发送出去 。和...
nginx_tcp_proxy_module-master 是nginx的TCP模块