nginx参数设置及优化

目录

一、用户设置

 二、nginx添加到systemd

 三、nginx参数调优

1、worker与cpu

2、io模型和worker并发连接数

四、nginx访问设置

1、控制单ip并发连接数

2、控制单位时间的请求数

3、限制带宽

4、浏览器自动索引

 5、expire(到期)缓存配置

 6、nginx日志轮询

 7、状态模块激活​编辑

8、禁用不必要日志 


一、用户设置

查看系统进程,nginx进程的用户是nobody,在系统中添加用户nginx,并设置配置文件用nginx用户身份启动nginx程序

 nginx参数设置及优化_第1张图片

 nginx参数设置及优化_第2张图片

nginx -s reload 加载后用户改变:

 二、nginx添加到systemd

创建并编写nginx.service文件,放入/usr/lib/systemd/system目录

nginx参数设置及优化_第3张图片

 nginx参数设置及优化_第4张图片

 systemctl daemon-reload 重新加载系统配置文件,之后就可以通过systemctl命令启动关闭nginx服务

nginx参数设置及优化_第5张图片

 三、nginx参数调优

1、worker与cpu

nginx参数设置及优化_第6张图片

注:可以通过lscpu来查看cpu状态

nginx参数设置及优化_第7张图片

 nginx官方推荐一个CPU核心对应一个nginx进程,并且进行捆绑。这里虚拟机2核cpu,01表示启用第一个CPU内核,10表示启用第二个CPU内核

绑定nginx进程和核心会避免由于CPU上下文切换而造成一定的损耗

2、io模型和worker并发连接数

 nginx参数设置及优化_第8张图片

 nginx进程运行在普通用户下,受到普通用户的限制,即应用的设置受到了操作系统的限制(kernel > systemd > app),故此时设置的并发连接数65535还未生效

命令ulimit -a 查询

nginx参数设置及优化_第9张图片

修改 /etc/security/limits.conf 来修改最大限制数

文件属于热插拔模块,即改即生效

四、nginx访问设置

在nginx默认发布目录/usr/local/nginx/html/ 下建立目录download ,在其中放入一张几百k的图片u用于实验测试

1、控制单ip并发连接数

在未作改动前,用ab进行压测访问测试图片

nginx参数设置及优化_第10张图片

 能看到10次都是成功

[root@server1 conf]# vim nginx.conf

http模块添加:
 limit_conn_zone $binary_remote_addr zone=addr:10m;
 $binary_remote_addr 表示通过remote_addr这个标识来做限制,nginx的内部变量,取的是远端客户端的地址
 zone=addr:10m	表示创建一个大小为10M,名字为addr的内存区域
 可以多开几个内存区域进行不同限制

location /download {
limit_conn addr 1;	#限制并发连接数为1
}

nginx参数设置及优化_第11张图片

 修改后重新加载生效,再进行压测:

nginx参数设置及优化_第12张图片

 发现只有一次成功,因为我们只设置了一个并发连接。若我们把ab压测的并发连接改为1个即(-c1),那么10个请求都是成功的。

2、控制单位时间的请求数

修改前,设置压测的并发链接为1进行压测:

nginx参数设置及优化_第13张图片

修改:

nginx参数设置及优化_第14张图片

 修改后加载,再测试:

nginx参数设置及优化_第15张图片

 上面设置了每秒接受请求数为一秒一次之后,其他9次访问均被拒绝,可以设置允许排队,即其他访问虽然不能立即处理,但可以排队等候被处理不至于直接拒绝掉,做到限流的效果。

排队、允许延迟

nginx参数设置及优化_第16张图片

 burst=5的效果是再处理一个访问时,后面允许五个访问排队等待被处理,但其他访问也不会被拒绝,会继续等待进入排队

测试效果

nginx参数设置及优化_第17张图片

排队、不允许延迟

nginx参数设置及优化_第18张图片

处理第一次访问,以及进入队列等待的5个访问,队列外的其他访问均被拒绝 

测试:

nginx参数设置及优化_第19张图片

3、限制带宽

nginx参数设置及优化_第20张图片

 限制流量为50k/s,访问一次大概需要10s

4、浏览器自动索引

通过浏览器可以访问到放在目录里的图片,但无法显示目录

nginx参数设置及优化_第21张图片

 nginx参数设置及优化_第22张图片

用处:方便下载图片等资源

nginx参数设置及优化_第23张图片

测试:

nginx参数设置及优化_第24张图片

 5、expire(到期)缓存配置

 缓存可以降低网络带宽,加速用户访问,一般主要用于静态空间,网站图片不怎么修改的地方,比如网站公司介绍

 nginx参数设置及优化_第25张图片

 测试:

nginx参数设置及优化_第26张图片

 6、nginx日志轮询

大量访问会导致ningx日志增长特别块,一些门户型站点每天的访问量很庞大,所以日志需要经常截断。

创建脚本
[root@server1 logs]# cat /opt/nginx_log.sh 
#!/bin/bash
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

赋予执行权限
[root@server1 logs]# chmod +x /opt/nginx_log.sh 

加入crontab定时任务
[root@server1 logs]# crontab -e
[root@server1 logs]# crontab -l
00 00 * * * /opt/nginx_log.sh &> /dev/null

为了安全,日志目录不给nginx用户访问权限
chmod -R 700 /usr/local/nginx/logs

nginx参数设置及优化_第27张图片

 nginx参数设置及优化_第28张图片

 nginx参数设置及优化_第29张图片

 nginx参数设置及优化_第30张图片

 nginx参数设置及优化_第31张图片

 7、状态模块激活nginx参数设置及优化_第32张图片

nginx参数设置及优化_第33张图片

8、禁用不必要日志 

nginx参数设置及优化_第34张图片

 nginx参数设置及优化_第35张图片

 测试:再次刷新页面,status模块请求数更新,但访问不计入日志

nginx参数设置及优化_第36张图片

9、ssl模块

nginx参数设置及优化_第37张图片

 此时我们需要创建证书:

nginx参数设置及优化_第38张图片

cert.pem证书创建到位,移动到/usr/local/nginx/conf目录 

nginx参数设置及优化_第39张图片

 reload nginx,可以访问https

nginx参数设置及优化_第40张图片

你可能感兴趣的:(运维,nginx)