2020-4-17 464 0
2020-3-7 206 0
未分类

背景:新做了一个网站:服务器操作系统: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_headerVary"Accept-Encoding,User-Agent";实操步骤:因为本人用的是宝塔面板,宝塔已经内置ngx_headers_more模块,所以直接修改Nginx的配置文件在gzip_varyon;下添加:add_headerVary"Accept-Encoding,User-Agent";并把gzip_varyon;修改成:gzip_varyoff;即可。参考资料:https://ziyuan.baidu.com/college/articleinfo?id=717https://help.aliyun.com/knowledge_detail/86967.html解决问题思路:当初未开启cdn的时候,并未出现此问题,后台开启cdn填充内容时,出现问题,因修改网站+填充数据,并未想到是cdn的问题。最初认为是Nginx识别pc/m跳转代码问题,查遍全网基本上就那种形式的写法。然后认为是网站程序不兼容此种方式,咨询了程序官方给出的意见是,2个域名设置2个网站去绑定,结果无果然后才想到cdn的问题,host文件直接ip指向服务器ip,恢复正常,然后提交工单反馈问题,最终结合百度、Google搞定此问题。

技术杂坛

在IIS上构建PHP网站的这一阶段,请考虑加强安全性所需的PHP配置设置,Web服务器设置和PHP应用程序设置。完成这些任务后,请记录您的设计决策,然后再继续执行步骤1:安装IIS和PHP。1.安全的PHP配置设置PHP的动态功能还使其成为潜在的安全风险,因为可以从Internet上的任何位置主动获取,接收和处理数据。攻击者可能会尝试发送恶意数据和脚本,并欺骗您的服务器获取恶意脚本并运行它们。攻击者还可能尝试在您的服务器上读取和写入文件,以控制该网站并将其用于自己的目的。您可以配置PHP设置以加强PHP安装的安全性,并帮助保护网站免受恶意攻击。Php.ini文件指定PHP在您的网站上运行时使用的配置设置。Php.ini文件确定允许哪些PHP脚本执行和禁止执行。本节介绍有助于保护PHP应用程序的配置设置。禁用远程URL的文件处理allow_url_fopen=Offallow_url_include=Off此设置非常重要,因为它可以防止在include()等语句中使用URL。将allow_url_fopen设置为“Off”意味着只能包含驻留在您网站中的文件。您不能包含来自其他服务器的文件,但其他人也不能通过远程文件包含(RFI)攻击。在RFI攻击中,有人在HTTP请求中嵌入了一个URL,希望您的脚本被欺骗运行他们的脚本。例如,不允许执行诸如include("http://website.com/page.php")之类的命令。通过指定路径和文件名,在您自己的站点中包含文件。例如,如果您有一个URL包含行,请将其转换为:include($_SERVER['DOCUMENT_ROOT'].'/page.php');代码段$_SERVER['DOCUMENT_ROOT']是设置为站点根文件夹的超全局变量。(请注意,没有后面的“/”;您必须在'/page.php'中提供前导“/”。)如果您想要包含其他一个网站的静态内容,例如include("http://website.com/page.php"),请在当前网站上制作该内容的副本,然后将其包含在本地。禁用Register_Globalsregister_globals=Off此设置使攻击者难以将代码注入脚本。例如,在URLhttp://site.com/index.php?variable=value中,当register_globals为On时,变量将传递到脚本中,其值设置为value。但是,当register_globals为Off时,变量不会自动传递到脚本的变量列表中。限制文件系统读/写限制文件系统读/写open_basedir="c:\inetpub\"此设置限制PHP脚本访问指定基目录之外的文件。禁用安全模式safe_mode=关闭safe_mode_gid=关闭此设置限制PHP脚本运行的权限。当safe_mode设置为“On”时,某些第三方脚本无法正常运行。请注意,从PHP6开始,safe_mode已弃用。限制脚本执行时间max_execution_time=30max_input_time=60这些设置控制允许脚本运行和解析用户输入的秒数。这些设置有助于防止恶意脚本注入服务器。限制内存使用和文件大小memory_limit=16Mupload_max_filesize=2Mpost_max_size=8Mmax_input_nesting_levels=64这些设置有助于有效管理内存和输入/输出。此外,它们可以防止恶意脚本占用内存和处理大量文件。配置错误记录display_errors=Offdisplay_startup_errors=Offlog_errors=Onerror_log="C:\path\of\your\choice"这些设置指定将所有错误和警告记录到错误日志文本文件中,并指定在从服务器发出的任何网页上都不会显示任何错误或警告。错误不应公开显示,因为它们可以帮助某人弄清楚如何攻击您的服务器。在测试新代码时,请务必检查错误日志启用FastCGI模拟此设置使IIS能够模拟调用客户端的安全性令牌,并定义用于运行请求的安全性上下文。禁用FastCGI日志记录fastcgi.logging=0当PHP使用FastCGI协议在stderr上发送任何数据时,FastCGI模块将使请求失败。禁用FastCGI日志记录将阻止PHP通过stderr发送错误信息,并为客户端生成500个响应代码。隐藏PHP存在expose_php=Off使用此设置,伴随传出页面的标头

2017-12-23 2208 0