当您拥有一台服务器时,世界上最正常的事情就是考虑安全性和更高的安全性,您再也无法对它感到偏执了。
一种通用的做法,但不建议使用,是对所有数据库使用同一用户,如果使用root,则更糟,这看起来令人难以置信,有些人(由于流浪或无知),我已经谈到了为什么你不应该这样 儿童的帖子现在是时候解释如何以及为什么更好地将Web服务器处理分离给不同的用户了,这一次它将使用 Nginx的.
用户和Web服务器是什么?
为了以简短的方式进行解释,Web服务器(apache,nginx等)需要打开系统中的进程,这些进程将是从HDD中获取文件(图像等)并进行处理的进程可用于客户端的浏览器。 Web服务器不能简单地获取文件并以没有人操纵它们的方式来处理文件,也就是说,它需要一个最终将要执行所有操作的用户,而这个用户就是我正在谈论的那个用户,您了解吗?
分成几个用户意味着什么?
假设在我们的服务器上有两个网站,一个是个人项目,另一个是(假设这是我们女友或兄弟的)。 即使当我们使用单独的数据库并且由不同的用户访问它们时,两个网站的文件最终都由同一用户操作,所有站点的PHP处理都由同一用户管理(通常是www-data)。 这是不推荐的做法,最好将所有内容分隔开,正如古老的谚语所说,安全胜于后悔。
好的,我知道了,我该如何使用Nginx
首先要注意的是,Nginx没有像Apache一样拥有自己的模块来处理PHP,对于Nginx,我们需要使用PHP-CGI或PHP-FPM,它们的工作原理与Apache一样好(或更好)。 因此,要使不同用户之间的PHP处理分开,我们需要更改PHP配置文件(CGI或FPM)中的行,而不是Nginx本身。
假设您使用 PHP-FPM,我们将创建一个配置文件 池 对于特定站点,也就是说,池是将PHP处理与PHP-FPM分开的方法,但我们分部分进行。
1.首先,我们必须知道我们将使用哪个系统用户,我假设我们还没有创建任何用户,那么让我们创建它:
adduser blog
我们将开始创建用户的正常过程,输入密码,等等。
1. 首先让我们转到/etc/php5/fpm/pool.d/:
cd /etc/php5/fpm/pool.d/
2. 现在,我们将创建一个名为blog.conf的文件:
touch blog.conf
3. 现在,我们将放置将用于VHost博客的池的配置:
[新闻]用户= 新闻 组= 新闻 听= / var /运行/ php5-fpm-新闻.sock listen.owner = 新闻 听.group = 新闻 pm =按需pm.max_children = 96 chdir = /
注意: 我用红色标记的是它们必须根据先前创建的用户进行修改的内容。 例如,如果他们与另一个用户创建另一个VHost(例如论坛),而不是简单地在每个行中放置论坛,而是博客吗?
4. 一旦配置了新池(我们刚刚创建和编辑的blog.conf文件),现在该告诉Nginx VHost在该站点对该VHost使用不同的袜子了。 将使用的袜子将是我们先前声明的袜子(/var/run/php5-fpm-blog.sock)。 让我们编辑Nginx VHost,在PHP处理部分中,我们指示使用该袜子。 例如:
位置〜\ .php $ {if(!-f $ request_filename){返回404; }
fastcgi_pass unix:/ var / run / php5-fpm-新闻。袜子;
包括fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }
如您所见,我指出该VHost的PHP处理(这些行例如在/ etc / nginx / sites-enabled / vhost-blog中)用在/var/run/php5-fpm-blog.sock ...中找到的袜子来做...这是我们先前在编辑/etc/php5/fpm/pool.d/blog.conf ...时创建的袜子?
5. 完成此操作后,我们将重新启动服务(php5-fpm和nginx)和voila,我们将看到该站点(vhost)的处理不是由www-data或root或任何类似的人完成的,而是由我们先前定义的。
在这里,我向您展示了 ps辅助| grep fpm 在我节点的一台服务器上:
ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm:泳池电子书电子书589 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm:泳池电子书www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm:池www www 609 0.0 0.2 350600 5048 30? S Mar0 00:3 php-fpm:池www tv611 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm:池电视3电视615 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm:泳池电视杂志1818 1.7 1.7 437576 36396? S 09:55 0:46 php-fpm:泳池杂志杂志2264 1.9 1.7 437332 35884? S 10:15 0:26 php-fpm:泳池杂志瞳孔2338 4.3 1.0 428992 22196? S 10:18 0:53 php-fpm:池瞳杂志2413 1.8 1.7 437764 36152? S 10:22 0:18 php-fpm:泳池gutl杂志2754 3.5 1.3 356724 27164? S 10:38 0:00 php-fpm:泳池gutl cgr 5624 0.0 1.0 365168 22696? S Apr28 0:16 php-fpm:泳池CGR学生7900 0.3 2.5 457052 52444? S Apr25 20:23 php-fpm:水池瞳孔瞳孔11021 0.4 2.5 458316 52864? S Apr28 5:57 php-fpm:池瞳cgr 11254 0.0 1.0 363152 21708? S Apr28 0:12 php-fpm:pool cgr cgr 13184 0.0 1.0 362872 21360吗? S Apr28 0:08 php-fpm:泳池CGR
如您所见...使用Nginx + PHP-FPM将用户的PHP处理分开非常容易,您会看到有多个池,因为有多个用户。
结论
当涉及到服务器时,您永远都不会感到偏执...安全不是一件可玩的事,我们越努力提高服务器及其服务的安全性,就越不可能被(成功)吓到。骇客企图或类似similar
Gaara,目前这些东西应该尽可能自动化,我建议您尝试Ansible。 没有代理,您只需要远程主机上的python,配置非常简单,yaml文件,Jinja模板。
https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx
让我们看看,这不仅适用于WordPress网站,而且...哈哈Ansible的点击率很高,但我更想确切地了解服务器上的所有工作原理,即使我必须花1分钟时间来创建新的袜子和一个新的VHost😀
使用Ansible,您可以使一切自动化,几乎可以做任何您想做的事情,这种方法的优点是您可以封装实践,然后随意执行,假设您的站点负载很重,并且想要在应用程序服务器之间进行负载平衡,这些必须配置为完全相同,您不能跳过某个步骤,或者在其中之一上做任何不同的事情,您能想象一步一步执行该过程4次吗? 使用Ansible,就像将主机名添加到清单文件和Voilá一样简单!
http://www.ansible.com/how-ansible-works
对Ansible邪教很抱歉,但这是您发现的其中一项技术,现在您希望每个人都使用它,因为它是如此酷和实用,就像当您发现NGINX并希望所有朋友立即离开Apache一样。
https://speakerdeck.com/slok/ansible-all-the-things
我确定我的帖子可以补充这一点...
http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/
我是(或正在学习)开发人员,使用NGIX时,在配置nginx + php-fpm时遇到很多问题。 我知道archlinux发行版并不是最好的服务器,但是每次更新ngix或php版本时,总会崩溃,所以我放弃了尝试……今天,我仍然使用经典的Apache + PHP,但是我再看看是否能再次使用NGIX ...也许是在虚拟机中
心态会有所变化,nginx提供静态内容并用作运行真正PHP的php-fpm的反向代理,您必须分部分开始并逐步实现部署,以查找部署指南您使用的框架,每个框架都有其详细信息,包括公众名称,静态名称,资源等。
放弃不存在的“ hostear”这个词,对社区有很大的帮助吗? 靠上帝,说“主持人”有那么难吗?
问候,按照您的示例,我想知道是否只能为wordpress backen创建一个池,即为wp-admin创建一个新的套接字以用于与后端的传入连接
位置/ wp-admin {
根目录/var/www/yoursite.com/wp-admin;
index index.php index.html index.htm;
位置〜^ / wp-admin /(.+.php)$ {
try_files $ uri = 404;
根目录/var/www/yoursite.com/wp-admin;
包括/ etc / nginx / fastcgi_params;
fastcgi_pass server unix:/run/php5-fpm2.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 1240;
}
location ~* ^/wp-admin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /var/www/tusitio.com/wp-admin/;
}
}