• 跨站攻击,对输入view的变量进行过滤,不要含html内容的用 htmlspecialchars, 需要包含html代码的过滤使用tidy扩展或使用htmlpurifier组件
  • 跨站请求伪造攻击(CSRF), 一般使用 session tocken处理,但只能对一般攻击者有效,重要的是做好用户发布验证
  • sql注入,过滤参数,或使用mysqli_real_escape_string或类似函数过渡字段值
  • session安全,session_id基于cookie存储,针对session_id做更多验证(比如ip, 浏览器特性等)
  • 爆力密码破解,在应用层记录连续错误次数,常用登录ip, 设置验证码,非明文密码,回答常设问题等方式处理
  • 伪造header信息,比如ip, 过滤header信息, web服务器重置相关header信息
  • 重定向攻击,一些用于跳转的url, 比如广告连接跳转 ad_jump.php?url=xxx, 对跳转地址进行合法判断,或加密,或短地址
  • 上传漏洞,检查上传权限,进行身份判断,判断文件类型,对上传目录禁止执行动态脚本

VCL语法及变量
https://www.varnish-cache.org/docs/4.1/reference/vcl.html

Http header的作用
https://www.varnish-cache.org/docs/4.0/users-guide/increasing-your-hitrate.html

VSL查询匹配(Log)
https://www.varnish-cache.org/docs/4.0/reference/vsl-query.html
VSL tags
https://www.varnish-cache.org/docs/4.0/reference/vsl.html

管理
https://www.varnish-cache.org/docs/4.1/users-guide/run_cli.html
https://www.varnish-cache.org/docs/4.1/reference/varnish-cli.html#varnish-cli-7
https://www.varnish-cache.org/docs/4.1/reference/varnishadm.html

刷新缓存
ban req.url ~ gc
https://www.varnish-cache.org/trac/wiki/VCLExampleEnableForceRefresh

发现线上squid版本太早,准备升级,配置有很大的改变
参考官方配置文档
http://www.squid-cache.org/Doc/config/

反向代理的配置官方示例
http://wiki.squid-cache.org/ConfigExamples#Reverse_Proxy_.28Acceleration.29

了解几个核心配置选项:
http_port, cache_peer, cache_dir, acl, http_access, visible_hostname, cache_mem
squid配置项很多,也比较复杂,如果只是做个简单反向代理简单配置几项即可工作

 

当数据量与搜索并发增大后,服务压力明显,通过以下方式改进

  1. 将索引分段分布到几台服务器,使用 index:local/agent合并索引索引
  2. 将建索引分离到单独服务器,使用indexer –nohup建立.tmp索引文件,使用–check创建 .new索引文件,将.new索引文件复制到搜索服务器,重启搜索服务 seached –stopwait && searchd
  3. 如果是随时间增量,分断索引更新频率
  4. 使用lvs进行负载均衡
  5. 增量索引使用
  6. 部分不好实现的业务使用其它搜索引擎,如 Elasticsearch

 

多台PHP服务器,  为方便管理,使用NFS共享程序文件(用过sersync实现实时同步),在访问量少的情况没啥问题,当php-fpm进程数与访问量上来后,

php-fpm错误日志报告大量执行超时;
系统日志报告大量php-fpm进程段错误或其它错误信息;
php服务器负载变得出奇的高,cpu,mem,io等负载都很低;
在Top中nfs的rpc进程排在前面;

由于单一访问可能加载上百的php程序文件,即使使用xcache缓存了opcode, 但还需要判断文件是否被修改,如下流程所示
xache原理

如果能减少从网络获取文件信息的大量操作,那此问题就能得到很大程度的解决,opcache很早就知道,只认为是与xcache, apc, ea之类的类似缓存或缓存opcode之类的,当时也就懒得理它,后来仔细查看有我们所期望的参数,在一时间间隔内不判断php文件修改时间

opcache.validate_timestamps(默认值:1)
禁用时, 您必须手动重置Zend Optimizer +或重新启动Web服务器,以使文件系统的更改生效. 检查的频率是由指令 “opcache.revalidate_freq” 控制.

opcache.revalidate_freq(默认值:2)
多久(以秒为单位)检查文件时间戳以改变共享内存的分配.”1″ 表示一秒校验一次, 但是是每个请求一次. “0″ 表示总是在校验.

通过ab测试发现qps还有20%左右的提高,最关键的是服务器top中看不到nfs的rpc进程身影,到此问题解决

opcache命中率

参考
xcache: http://blog.linuxeye.com/361.html
opcache: http://blog.haohtml.com/archives/14646