Nginx常见的优化配置
1、调整worker_processes
指Nginx要生成的worker数量,最佳实践是每个CPU运行1个工作进程。
bash
grep processor /proc/cpuinfo | wc -l
2、最大化worker_connections
Nginx Web服务器可以同时提供服务的客户端数。与worker_processes结合使用时,获得每秒可以服务的最大客户端数
最大客户端数/秒=工作进程*工作者连接数
为了最大化Nginx的全部潜力,应将工作者连接设置为核心一次可以运行的允许的最大进程数1024
3、启用Gzip压缩
压缩文件大小,减少了客户端http的传输带宽,因此提高了页面加载速度
bash
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml;
4、为静态文件启用缓存
为静态文件启用缓存,以减少带宽并提高性能,可以添加下面的命令,限定计算机缓存网页的静态文件:
bash
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
5、限制最大连接数
在http模块内server模块外配置limit_conn_zone,配置连接的IP,在http,server或location模块配置limit_conn,能配置IP的最大连接数。
bash
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 1;
6、禁止非法的HTTP User Agents
User Agent是HTTP协议中对浏览器的一种标识,禁止非法的User Agent可以阻止爬虫和扫描器的一些请求,防止这些请求大量消耗Nginx服务器资源。
为了更好的维护,最好创建一个文件,包含不期望的user agent列表例如/etc/nginx/blockuseragents.rules包含如下内容
bash
map $http_user_agent $blockedagent {
default 0;
~*malicious 1;
~*bot 1;
~*backdoor 1;
~*crawler 1;
~*bandit 1;
}
#将以下语句放到配置文件模板server内
include /etc/nginx/blockuseragents.rules;
7、禁掉不需要的 HTTP 方法
一些web站点和应用,可以只支持GET、POST和HEAD方法。在配置文件中的 serve r模块加入如下方法可以阻止一些欺骗攻击
bash
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 444;
}