目录

一、用户设置

 二、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 更改host nginx配置修改_连接数

 

nginx 更改host nginx配置修改_nginx_02

 

nginx 更改host nginx配置修改_运维_03

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

nginx 更改host nginx配置修改_运维_04

 二、nginx添加到systemd

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

nginx 更改host nginx配置修改_运维_05

 

nginx 更改host nginx配置修改_压测_06

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

nginx 更改host nginx配置修改_nginx 更改host_07

 三、nginx参数调优

1、worker与cpu

nginx 更改host nginx配置修改_运维_08

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


nginx 更改host nginx配置修改_连接数_09

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

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

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

 

nginx 更改host nginx配置修改_nginx 更改host_10

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


命令ulimit -a 查询

nginx 更改host nginx配置修改_nginx 更改host_11


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

nginx 更改host nginx配置修改_连接数_12

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

四、nginx访问设置

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

nginx 更改host nginx配置修改_nginx 更改host_13

1、控制单ip并发连接数

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

nginx 更改host nginx配置修改_nginx 更改host_14

 能看到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 更改host nginx配置修改_nginx 更改host_15

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

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

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

nginx 更改host nginx配置修改_nginx_16

修改:

nginx 更改host nginx配置修改_nginx_17


 修改后加载,再测试:

nginx 更改host nginx配置修改_运维_18

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


排队、允许延迟

nginx 更改host nginx配置修改_连接数_19

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


测试效果

nginx 更改host nginx配置修改_nginx 更改host_20


排队、不允许延迟

nginx 更改host nginx配置修改_压测_21

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


测试:

nginx 更改host nginx配置修改_压测_22

3、限制带宽

nginx 更改host nginx配置修改_nginx_23

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

4、浏览器自动索引

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

 

nginx 更改host nginx配置修改_nginx 更改host_24


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

nginx 更改host nginx配置修改_nginx_25

测试:

nginx 更改host nginx配置修改_压测_26

 5、expire(到期)缓存配置

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

 

nginx 更改host nginx配置修改_运维_27

 测试:

nginx 更改host nginx配置修改_连接数_28

 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 更改host nginx配置修改_运维_29

 

nginx 更改host nginx配置修改_nginx_30

 

nginx 更改host nginx配置修改_运维_31

 

nginx 更改host nginx配置修改_nginx_32

 

nginx 更改host nginx配置修改_连接数_33

 7、状态模块激活

nginx 更改host nginx配置修改_nginx_34

nginx 更改host nginx配置修改_运维_35

8、禁用不必要日志 

nginx 更改host nginx配置修改_运维_36

 

nginx 更改host nginx配置修改_nginx 更改host_37

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

nginx 更改host nginx配置修改_压测_38

9、ssl模块

nginx 更改host nginx配置修改_运维_39

 此时我们需要创建证书:

nginx 更改host nginx配置修改_压测_40

nginx 更改host nginx配置修改_压测_41

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

nginx 更改host nginx配置修改_运维_42

 reload nginx,可以访问https

nginx 更改host nginx配置修改_nginx_43