nginx 最佳安全实践
作者:亚艾元技术部
禁用不需要的http方法:
HTTP支持的方法要多一些,实际我们平时用的就是GET|HEAD|POST, 对于TRACE和DELETE,就不常用,而且后面两种方法经常带来潜在的危险,比如跨站追踪攻击和窃取cookie信息等等。
通过下面的代码,即可禁用:
if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405; }
作者:亚艾元技术部
禁用不需要的http方法:
HTTP支持的方法要多一些,实际我们平时用的就是GET|HEAD|POST, 对于TRACE和DELETE,就不常用,而且后面两种方法经常带来潜在的危险,比如跨站追踪攻击和窃取cookie信息等等。
通过下面的代码,即可禁用:
if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405; }
作者:亚艾元技术部
Drupal 8 网站部署的nginx有时候反应有点慢,经过查看日志,特别是错误日志,存在大量这种信息:
an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/7/74/0000035747 while reading upstream
作者:亚艾元技术部
我们在Drupal8项目中,遇到一个段落P标签对齐的问题。最新的浏览器下面,都没有问题,但是360浏览器,选择了兼容模式,问题就出来了,客户使用360浏览器的还是比较多,让我们一定解决这个问题。总是对不齐。尝试了很久,我们的工程师都没有解决,后来我们向CSS专家shixinwzw求助,给出了一个兼容性较强的CSS实现。
作者:亚艾元技术部
在Drupal7下面,开启了页面缓存以后,当你编辑了节点以后,匿名用户看到的内容需要等一个多小时,才会看到最新的修改。除非你安装expire模块,可以帮你实现这个功能。
到了Drupal8,expire模块的继任者purge模块,我自己看了源代码,发现他没有提供对核心自带的页面缓存的支持。我打算自己写一个模块,实现对页面缓存的支持。不过从purge模块的文档里面,我看到了Drupal8核心自己支持当编辑一个节点时,更新对应页面的缓存。
作者:亚艾元技术部
导航到管理界面,配置》开发》性能,点击清空所有缓存按钮。即可清空所有缓存。
如果这个时候,你的页面已经白屏,进不去。怎么办,如果是本地,可以打开phpmyadmin,找到以cache开头的数据库表,一个一个的清空缓存。
还有一个办法:
作者:亚艾元技术部
我们将Drupal7的网站静态化以后,生成的文件,没有放到Drupal网站的根目录下面。我们没有为其分配子域名。而是采用主域名下面的子目录的形式:
我们原来的处理是在www.example.com所在的目录下面创建一个subsite1这样的子目录,做以下nginx配置:
location = /subsite1/ {
作者: 老葛 亚艾元软件
随着Drupal7版本的进入历史,官方不再维护,相信越来越多的用户,会选择将Drupal7网站静态化,这样会避免各种安全问题,还会提升速度,作为历史遗留网站的一个过渡。随着这样的需求越来越多,我们尝试了与原来boost静态化不同的静态化模式,将Drupal7网站彻底转换为静态html,完全不依赖PHP,mysql数据库。
Drupal7下面的静态化打包,我们采用static模块,在此基础之上,为了兼容nginx,做了进一步的改进。
参考配置:
Production host:生成站点所在路径,可以包含子目录。
Root cache directory:文件的存放目录的根目录。
Normal cache directory:实际存放的本地目录