如何优化 Nginx 配置

介绍

Nginx 的

Nginx 是一个快速而轻量级的替代程序,但 Nginx 就像任何类型的服务器或软件一样,必须调整以帮助实现最佳性能。

要求

  • 一个新的 Debian 7 滴滴与 初始安装完成
  • 滴滴还必须有一个新安装和配置的 Nginx 服务器运行。

工人流程和工人联系

我们需要调节的第一两个变量是工人流程和工人连接。在我们跳入每个设置之前,我们需要了解这些指令的控制是什么。 worker_processes指令是 Nginx 生命的坚实支柱。该指令负责让我们的虚拟服务器知道有多少工人将生长,一旦它已被绑定到适当的 IP 和端口(s)。

要弄清楚你需要设置哪个数字 worker_processes,只需看看你在设置中有多少内核。如果你使用的是DigitalOcean 512MB设置,那么它可能是一个内核。

1grep processor /proc/cpuinfo | wc -l

假设这会返回一个值: 1 然后这是我们机器上的核心数量!

worker_connections命令告诉我们的工人流程 Nginx可以同时服务多少人;默认值为768;然而,考虑到每个浏览器通常至少打开2个连接/服务器,这个数字可以为一半。

1ulimit -n

在较小的机器(512MB滴)上,这个数字可能会读到1024,这是一个很好的起始数字。

让我们更新我们的 config:

「sudo nano /etc/nginx/nginx.conf」

1worker_processes 1;
2worker_connections 1024;

请记住,可以服务的客户端数量可以乘以核心数量。在这种情况下,我们可以服务1024客户端/秒。

巴菲特

我们可以做的另一个非常重要的调整是缓冲尺寸. 如果缓冲尺寸太低,那么 Nginx 将不得不写到一个临时文件,导致磁盘不断阅读和写入。

client_body_buffer_size:此操作处理客户端缓冲尺寸,这意味着任何发送到 Nginx 的 POST 操作。

client_header_buffer_size:类似于前一个指令,它只处理客户端标题大小。

client_max_body_size: 客户端请求的最大允许大小. 如果超过最大大小,则 Nginx 会发出 413 错误或 Request Entity Too Large

large_client_header_buffers:对于大型客户端标题的最大缓冲量和大小。

1client_body_buffer_size 10K;
2client_header_buffer_size 1k;
3client_max_body_size 8m;
4large_client_header_buffers 2 1k;

时光

Timeouts也可以大大提高性能。

client_body_timeoutclient_header_timeout指令负责服务器在要求后等待客户端体或客户端头发送的时间。

keepalive_timeout分配了与客户端保持连接的时间。

最后,send_timeout不是在整个答案传输上建立的,而只是在两个读取操作之间;如果在这个时间之后,客户端什么也不做,那么 Nginx 就关闭了连接。

1client_body_timeout 12;
2client_header_timeout 12;
3keepalive_timeout 15;
4send_timeout 10;

Gzip 压缩

Gzip 可以帮助减少 Nginx 处理的网络传输量,但是,要小心增加gzip_comp_level太高,因为服务器会开始浪费 CPU 周期。

1gzip on;
2gzip_comp_level 2;
3gzip_min_length 1000;
4gzip_proxied expired no-cache no-store private auth;
5gzip_types text/plain application/x-javascript text/xml text/css application/xml;

静态文件缓存

您可以为不变更且定期服务的文件设置过期标题,此指令可以添加到实际的 Nginx 服务器块中。

1location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
2expires 365d;
3}

添加和删除上述数组中的任何文件类型,以匹配您的 Nginx 服务器的文件类型。

落地

Nginx 會記錄到 VPS 到日志檔案的每個要求. 如果您使用分析來監控此情況,您可能想關閉此功能。

1access_log off;

保存并关闭文件,然后运行:

1sudo service nginx restart

结论

在一天结束时,一个正确配置的服务器是相应地监控和调整的服务器。上述变量中没有一个被设置为石头,并且需要调整为每个独特的案例。 更进一步的道路上,你可能正在寻求通过研究负载平衡和水平扩展来提高你的机器性能。

Submitted by: Alex Kavon
comments powered by Disqus