介绍
Nginx
Nginx是一个快速和轻量级的替代,有时霸气的Apache 2.但是,Nginx就像任何种类的服务器或软件必须调整,以帮助实现最佳性能。
要求
新鲜的Debian 7Droplet与intial安装完成 。
该Droplet还必须有一个新安装和配置的Nginx服务器运行。 尝试Debian的LEMP教程 ,或一些更基本的,请尝试Debian的Nginx的服务器模块教程 。
一个很好的了解Linux的基础知识 。
工作进程和工作者连接
我们需要调整的前两个变量是工作进程和工作连接。 在我们跳到每个设置之前,我们需要了解这些指令的控制。 该worker_processes指令是生命的Nginx的坚固的脊椎。 此伪指令负责让我们的虚拟服务器知道许多工作者在绑定到正确的IP和端口后产生。 通常的做法是每个核心运行1个工作进程。 任何高于这个都不会伤害你的系统,但它会留下闲置的进程通常只是说谎。
为了找出你需要设置worker_processes于简单地看看你有你的设置内核的数量多少号。 如果你使用DigitalOcean 512MB设置,那么它可能是一个核心。 如果你最终快速调整到更大的设置,那么你需要再次检查你的核心,并相应地调整这个数字。 我们可以通过grep出cpuinfo来实现:
grep processor /proc/cpuinfo | wc -l
让我们假设这返回一个值1.这是我们的机器上的核心数量!
该worker_connections
命令告诉我们的工作进程,有多少人可以同时Nginx的送达。 默认值为768; 然而,考虑到每个浏览器通常打开至少2个连接/服务器,这个数字可以减半。 这就是为什么我们需要调整我们的工人连接以充分发挥潜力。 我们可以通过发出ulimit命令来检查核心的限制:
ulimit -n
在较小的机器(512MBDroplet)上,这个数字可能读取1024,这是一个很好的起始数字。
让我们更新我们的配置:
sudo nano /etc/nginx/nginx.conf
worker_processes 1;
worker_connections 1024;
请记住,可以投放的客户端数量可以乘以内核数量。 在这种情况下,我们可以服务器1024个客户端/秒。 这是,然而,甚至进一步通过减轻keepalive_timeout
指令。
缓冲液
另一个非常重要的调整,我们可以做的是缓冲区大小。 如果缓冲区大小太低,那么Nginx将不得不写入临时文件,导致磁盘持续读写。 在做出任何决定之前,我们需要了解一些指令。
client_body_buffer_size
:这个处理客户端缓冲区大小,这意味着发送到Nginx的任何POST动作。 POST操作通常是提交。
client_header_buffer_size
:到先前指令的类似,只是代替它处理客户端头大小。 对于所有意图和目的,1K通常是这个指令体面的大小。
client_max_body_size
:允许的最大尺寸为客户请求。 如果超过了最大尺寸,然后Nginx的会吐出一个413错误或请求实体太大 。
large_client_header_buffers
:对大客户标头的最大数目和缓冲液的大小。
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
超时
超时还可以大幅提高性能。
该client_body_timeout
和client_header_timeout
指令负责服务器将等待客户的身体或客户端头请求后,发送的时间。 如果既没有身体或头被发送,服务器会发出408错误或请求超时 。
该keepalive_timeout
指定为与客户端保持连接超时。 简单地说,Nginx将在这段时间后关闭与客户端的连接。
最后, send_timeout
未建立上回答的整体转移,但只有读取两个操作之间; 如果在此时间后客户端将什么都不采取,那么Nginx正在关闭连接。
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
Gzip压缩
Gzip可以帮助减少Nginx处理的网络传输量。 但是,要注意增加gzip_comp_level
太高作为服务器将开始浪费CPU周期。
gzip on;
gzip_comp_level 2;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/x-javascript text/xml text/css application/xml;
静态文件缓存
可以为不更改并定期提供的文件设置过期标头。 这个指令可以添加到实际的Nginx服务器块。
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
添加和删除上面的数组中的任何文件类型,以匹配您的Nginx服务器的文件类型。
记录
Nginx将每一个命中VPS的请求记录到日志文件中。 如果您使用分析功能监控此情况,您可能需要关闭此功能。 只需编辑access_log
指令:
access_log off;
保存并关闭文件,然后运行:
sudo service nginx restart
结论
在一天结束时,正确配置的服务器是被相应地监视和调整的服务器。 以上所有的变量都没有设置,需要根据每个独特的情况进行调整。 更进一步的道路,你可能希望通过研究负载平衡和水平缩放来进一步提高机器性能。 这些只是一个良好的系统管理员可以对服务器的许多增强中的几个。