架构师日记——Nginx的配置优化

优化Nginx的配置,做到合理高效的使用

优化的方向和目标,无外乎:
1. 尽量提高单台机器处理效率
2. 尽量降低单台机器的负载
3. 尽量降低磁盘的I/O
4. 尽量降低网络I/O
5. 尽量减少内存使用
6. 尽量高效利用CPU

生产环境下,应该使Nginx模块最小化,就是用到哪几个就开哪几个,这个需要在编译安装Nginx的时候做

用户和组,最好是为Nginx创建用户和组,并单独设置权限,这用会更安全

worker_proceses:通常配置成cpu的总核数,或者其2倍,性能会更好,这可以减少进程间切换带来的消耗

还可以使用woker_cpu_affinity来绑定cpu,使得每个worker进程独享一个cpu,实现完全的并发,性能更好,不过这个只对Linux系统有效

events里面的时间模型,Linux推荐使用epoll模型,FreeBSD推荐采用kqueue

worker_rlimit_nofile:描述一个nginx进程打开最多的文件数目。配置成跟linux内核文件打开数一致就可以了。可以通过ulimit -n来查看,新装的系统默认是1024

worker_connnections:每个进程允许的最多连接数,默认是1024,可以设置大一些。理论上并发总数是worker_processes和worker_connections的乘积,worker_connections值的设置跟物理内存大小有关,因为系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右,所以,worker_connections的值需要根基worker_processes进程数目和系统可以打开的最大文件总数进行适当地进行设置

keepalive_timeout:设置到65左右就可以

client_header_buffer_size:设置请求的缓存, 设置为4k,通常为系统分页大小的整数倍,可以通过getconf PAGESIZE来车看系统分页大小

对打开文件设置缓存

  • open_file_cache_max=建议设置成和每个进程打开的最大文件数一致 inactive=60s;
  • open_file_cache_valid 90s;
  • open_file_cache_min_uses 2;
  • open_file_cache_errors on;

尽量开启Gzip压缩,gzip_comp_level通常设置成3-5,太高会浪费CPU

error日志优化:运行期间设置为crit,可以减少I/O

access日志优化:如果使用了其他统计软件,可以关闭日志,来减少磁盘写,或者写入内存文件,提高I/O效率

sendfile指定nginx是否调用sendfile函数(zero copy方式)来输出文件,通常设置为on,如果是下载等应用磁盘IO重负载IO负载应用,可设置为off

client_buffer_size优化:如果buffer_size处理客户端请求体buffer大小。用来处理POST提交数据,上传文件等。

client_body_buffer_size需要足够大以容纳需要上传的POST数据。桶里还有后端的buffer数据。

worker_priority进程优先级设置:Linux系统中,优先级高的进程会占用更多的系统资源,这里配置的是进程的静态优先级,取值范围-20到+19,-20级别最高。因此可以把这个值设置小一点,但不建议比内核进程的值低(通常为-5)

负载均衡锁accept_mutex,建议开启,默认就是开启的

如果使用SSL的话,而且服务器上有SSL硬件加速设备的话,请开启硬件加速

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一款高性能的Web服务器软件,它支持SSL/TLS协议,可以为Web应用程序提供安全的访问。本文将介绍如何在Nginx上开启SSL模块,并配置SSL证书,使得Web应用程序支持HTTPS访问。 1. 安装SSL模块 在编译Nginx的时候,需要开启SSL模块。可以在编译选项中加入--with-http_ssl_module参数来开启SSL模块。如果使用的是预编译的二进制包,可以通过查看nginx.conf文件来确定是否开启了SSL模块。如果存在以下配置项,则说明SSL模块已经开启。 ``` listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; ``` 2. 配置SSL证书 SSL证书用于加密网站和客户端之间的通信,防止敏感信息在传输过程中被窃取。可以购买SSL证书,也可以使用免费的证书,例如Let's Encrypt。 在配置SSL证书之前,需要先生成证书和私钥。可以使用如下命令生成自签名证书和私钥。 ``` openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt ``` 生成的server.key和server.crt文件分别是私钥和证书。接下来,需要将证书和私钥拷贝到Nginx配置文件所在的目录。 ``` cp server.crt /etc/nginx/ cp server.key /etc/nginx/ ``` 然后,在Nginx配置文件中添加以下配置项,指定证书和私钥的路径。 ``` ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ``` 3. 配置SSL协议和加密算法 在Nginx配置文件中,可以配置SSL协议和加密算法。可以使用如下配置项指定SSL协议。 ``` ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ``` 可以使用如下配置项指定加密算法。 ``` ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ``` 4. 配置HTTPS监听端口 在Nginx配置文件中,可以使用如下配置项开启HTTPS监听端口。 ``` server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; location / { # 配置Web应用程序的根目录 root /var/www/html; index index.html; } } ``` 在以上配置中,listen 443 ssl指定了HTTPS监听端口,并且ssl_certificate和ssl_certificate_key指定了SSL证书和私钥的路径。location /用于配置Web应用程序的根目录。 5. 重启Nginx服务 完成以上配置后,需要重启Nginx服务,使得配置生效。 ``` service nginx restart ``` 通过以上步骤,就可以在Nginx上开启SSL模块,并配置SSL证书,使得Web应用程序支持HTTPS访问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值