当前位置:首页 > 日记本 > 正文内容

CDN下 Nginx开启PC/M识别跳到对应的域名下访问,css/js死循环问题

zhangchap4年前 (2020-02-19)日记本763

背景:

新做了一个网站:

  服务器操作系统:Linux;
  WEB服务器版本:nginx/1.16.1;

问题:


通过Nginx识别PC/M识别跳到对应的域名下访问,开启阿里云的全站加速功能后,域名能跳转对应的,但是css/js间歇性、随机性死循环式重定向,经过排除服务器、网站程序,最终锁定问题,在此做个记录。


问题造成原因:


因为通过UserAgent头识别用户的客户端,然后返回不同的内容给不同的UA用户。但是CDN缓存并不会区分UA,只会区分URL,所以相同URL缓存的内容是一致的,无论UA是什么样。


解决方案:

CDN是支持对不同的UA,设置不同的缓存,这个是根据vary头来控制的。vary头里面的字段一般是头信息的字段,表示CDN会检测这个头信息。如果内容不一致就缓存不同的内容,命中时也一样,必须头信息一致才会缓存。这个vary头需要在源站添加。在Nginx配置中增加如下信息。
 
add_header Vary "Accept-Encoding, User-Agent"; 

实操步骤:

因为本人用的是宝塔面板,宝塔已经内置 ngx_headers_more 模块,所以直接修改Nginx的配置文件

在gzip_vary on;下添加:

add_header Vary "Accept-Encoding, User-Agent";

并把gzip_vary on;修改成:


gzip_vary off;
即可。



参考资料:

https://ziyuan.baidu.com/college/articleinfo?id=717

https://help.aliyun.com/knowledge_detail/86967.html



解决问题思路:

当初未开启cdn的时候,并未出现此问题,后台开启cdn填充内容时,出现问题,因修改网站+填充数据,并未想到是cdn的问题。

最初认为是 Nginx 识别pc/m跳转代码问题, 查遍全网基本上就那种形式的写法。

然后认为是网站程序不兼容此种方式,咨询了程序官方给出的意见是,2个域名设置2个网站去绑定,结果无果

然后才想到cdn的问题,host文件直接ip指向服务器ip,恢复正常,然后提交工单反馈问题,最终结合百度、Google搞定此问题。


分享给朋友:

相关文章

python使用mongodb数据库

from pymongo import MongoClient,collection class KSpdier(Thread):   ...

python xpath语法总结

python xpath语法总结:常用的://1.从任意节点开始/2.从根节点开始//div/p3.div下的p标签//div[@class="hrzz_bottom"]/ul/l...

python提高运行速度numba.jit

使用numba.jit。 numba可以将 Python 函数 JIT 编译为机器码执行,大大提高代码运行速度。import time def computeSum(size:&...

python md5生成

from hashlib import md5 md5_hash = md5(title.encode('utf-8')).hexd...

python退出程序,终止运行

python退出程序运行方式常用的两种:os._exit() 和 sys.exit()1. sys.exit()import os,sys try:    ...

python下elasticsearch搜索接口封装实现

# -*- coding:utf-8 -*- from elasticsearch import Elasticsearch,Transp...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。