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 -s reload 加载后用户改变:

 二、nginx添加到systemd

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

 

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

 三、nginx参数调优

1、worker与cpu

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

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

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

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

 

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

命令ulimit -a 查询

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

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

四、nginx访问设置

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

1、控制单ip并发连接数

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

 能看到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
}

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

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

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

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

修改:

 修改后加载,再测试:

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

排队、允许延迟

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

测试效果

排队、不允许延迟

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

测试:

3、限制带宽

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

4、浏览器自动索引

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

 

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

测试:

 5、expire(到期)缓存配置

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

 

 测试:

 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

 

 

 

 

 7、状态模块激活

8、禁用不必要日志 

 

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

9、ssl模块

 此时我们需要创建证书:

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

 reload nginx,可以访问https

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 NG (Nginx) 进行 Web 服务器配置时,常用的参数设置优化有如下几种: 1. worker_processes:指定 worker 进程的数量。建议将其设置为 CPU 核心数的 2 倍。 2. worker_connections:指定每个 worker 进程能够处理的最大连接数。建议将其设置为服务器能够承受的最大连接数除以 worker 进程数。 3. keepalive_timeout:指定客户端与服务器之间的连接保持时间,也就是说,在这个时间内,客户端可以发送多次请求,而不需要重新建立连接。建议将其设置为 15-30 秒。 4. gzip:开启 gzip 压缩功能,可以减少页面传输大小,加快页面加载速度。 5. server_tokens:控制是否在响应头中显示服务器版本信息。建议将其设置为 off。 6. sendfile:开启 sendfile 功能,可以通过直接将文件从磁盘中读取到内存中,再发送到客户端,提高传输效率。 7. server_names_hash_bucket_size:为了加快服务器名字查找速度,需要设置一个哈希表的大小。建议将其设置为 64 或更大。 8. client_body_buffer_size 和 client_header_buffer_size:控制客户端请求头和请求体的缓冲区大小。 9. proxy_buffer_size 和 proxy_buffers:控制反向代理的缓冲区大小。 10. fastcgi_buffer_size 和 fastcgi_buffers:控制 FastCGI 代理的缓冲区大小。 以上是 NG 常用参数设置优化的一些建议,实际使用时还需要结合具体的服务器配置和负载情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值