最近几日被挂马挂的头晕,一直很难查到具体哪个网站的漏洞。也是原来的设置不够严谨,导致了这次的后果。一直想像apache,IIS一样来隔离网站,不让木马跨站入侵。网上找了下nginx本身不带这个功能设置,也有牛人修改了nginx实现了网站隔离,那nginx真的没办法隔离吗?今天终于找到了方法,和apache一样,利用php.ini的open_basedir来实现分离。
我们知道在nginx中运行PHP实际上是PHP-CGI处理的,这里的方法我们用PHP-FPM来实现。PHP-FPM里有一个重写PHP.ini的设置的地方,那么我们把需要隔离的网站用独立的PHP-CGI进程来跑,缺点就是比原来共享PHP-CGI进程要占用更多的内存,因为PHP-CGI进程多了嘛。
先在NGINX里指定解析的PHP进程,我这里没有用端口模式,用端口模式也一样。
(全文…)
上周在迁移网站到新服务器的时候,碰到了PHP-CGI经常跑着跑着占到100%CPU,然后进程全部卡死,网站没有响应。
在经过一天的观察下,在FPM下有错误日志
11月 13 21:19:21.219359 [NOTICE] fpm_got_signal(), line 48: received SIGCHLD
11月 13 21:19:21.219415 [NOTICE] fpm_children_bury(), line 194: child 7528 stopped for tracing
11月 13 21:19:21.219426 [NOTICE] fpm_php_trace(), line 139: about to trace 7528
11月 13 21:19:21.219579 [ERROR] fpm_trace_get_long(), line 78: ptrace(PEEKDATA) failed: 输入/输出错误 (5)
11月 13 21:19:21.220292 [NOTICE] fpm_php_trace(), line 167: finished trace of 7528
google了一下在nginx论坛上也有人问起这个问题,但是没有解决方法。
开始无从下手,换成Spawnfcgi管理php-cgi。结果跑了一个晚上,还以为解决的时候,当我早上登录服务器发现,诡异的事情又出现了,CPU急剧上升100%,负载上升到80-100多。
(全文…)