设为首页 收藏本站
查看: 984|回复: 0

[经验分享] NGINX优化之路(一)

[复制链接]

尚未签到

发表于 2018-11-11 14:03:37 | 显示全部楼层 |阅读模式
  一、为了安全,隐藏Nginx系统版本号,修改软件名称
[root@blog ~]# vim  /home/tools/nginx-1.6.3/src/core/nginx.h  

  
  1
  
  2 /*
  
  3  * Copyright (C) Igor Sysoev
  
  4  * Copyright (C) Nginx, Inc.
  
  5  */
  
  6
  
  7
  
  8 #ifndef _NGINX_H_INCLUDED_
  
  9 #define _NGINX_H_INCLUDED_
  
10
  
11
  
12 #define nginx_version      1006003
  
#修改版本号
  
13 #define NGINX_VERSION      "1.6.3"
  
#修改软件名
  
14 #define NGINX_VER          "nginx/" NGINX_VERSION
  
#将nginx修改为想要修改的软件名称
  
16 #define NGINX_VAR          "NGINX"
  
17 #define NGX_OLDPID_EXT     ".oldbin"
  
18
  
19
  
20 #endif /* _NGINX_H_INCLUDED_ */
  二、更改系统默认用户,直接修改用户,nobody 或者编译安装时:直接指定用户参数:
指定用户、组  
./configure --prefix=/usr/local/nginx  --user=www --group=www
  
[root@blog ~]# grep "user" /usr/local/nginx/conf/nginx.conf.default
  
#user  nobody;
  
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
  
[root@blog ~]#
  三、调整Nginx进程参数时,需要做性能测试,以及监控,当用户访问量、并发量等问题。
/usr/local/nginx/conf/nginx.conf  
worker_processes  1;
  
使用命令查看
  
[root@blog ~]#  grep "processor" /proc/cpuinfo |wc -l
  
1
  
[root@blog ~]#
  
根据服务器的配置进行计算
  四、优化绑定不同的Nginx进程到不同CPU上,这个需要根据业务类型进行操作,此处不赘述,需要看业务来实施。
  五、调整Nginx单个进程允许的客户端最大连接数
worker_connections  1024;  
worker_connections的值要根据具体服务器性能和程序的内存使用量来指定(一个进程启动使用的内存根据程序确定)
  
events {
  
    worker_connections  20480;
  
}
  六、Nginx最大连接数
  Nginx worker进程的最大打开文件数,这个控制连接数的参数为worker_rlimit_nofile。
  worker_rlimit_nofile 65535
  七、开启高效文件传输
(1)设置参数:sendfile on;  
   sendfile参数用于开启文件的高效传输模式,同时将tcp_nopush和tcp_nodelay两个指定设为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率。
  
官方说明:
  
syntax:    sendfile on|off  #参数语法
  
default:    sendfile off    #参数默认大小
  
context:    http,server,location,if in location #可放置的标签段
  
(2)设置参数:tcp_nopush on;
  
Syntax: tcp_nopush on | off; #参数语法
  
Default: tcp_nopush off; #参数默认大小
  
Context: http, server, location #可以放置标签段
  
参数作用:激活或禁用Linux上的TCP_CORK socker选项,此选项仅仅开启sendfile时才生效,激活这个tcp_nopush参数可以运行把http response header和文件的开始放在一个文件里发布,减少网络报文段的数量。
  
(3)设置参数:tcp_nodelay on;
  
用于激活tcp_nodelay功能,提高I/O性能
  
Syntax: tcp_nodelay on | off;
  
Default: tcp_nodelay on;
  
Context: http, server, location
  
参数作用:默认情况下数据发送时,内核并不会马上发送,可能会等待更多的字节组成一个数据包,这样可以提高I/O性能,但是,在每次只发送很少字节的业务场景,使用tcp_nodelay功能,等待时间会比较长。
  八、Nginx超时设置:
  4.Nginx连接超时的参数设置
  (1)设置参数:keeplived_timeout 60;
  用于设置客户端连接保持会话的超时时间为60秒。超过这个时间,服务器会关闭该连接,此数值为参考值。
  Syntax: keepalive_timeout timeout [header_timeout]; #参数语法
  Default: keepalive_timeout 75s; #参数默认大小
  Context: http, server, location #可以放置的标签段
  参数作用:keep-alive可以使客户端到服务端已经建立的连接一直工作不退出,当服务器有持续请求时,keep-alive会使用正在建立的连接提供服务,从而避免服务器重新建立新连接处理请求。
  (2)设置参数:client_header_timeout 15;
  用于设置读取客户端请求头数据的超时时间,此处的数值15单位是秒。
  Syntax: client_header_timeout time;
  Default: client_header_timeout 60s;
  Context: http, server
  参数作用:设置读取客户端请求头数据的超时时间。如果超过这个时间,客户端还没有发送完整的header数据,服务端将数据返回“Request time out (408)”错误。
  (3)设置参数:client_body_timeout 15;
  用于设置读取客户端请求主体的超时时间,默认值是60
  Syntax: client_body_timeout time;
  Default: client_body_timeout 60s;
  Context: http, server, location
  参数作用:设置读取客户端请求主体的超时时间。这个超时仅仅为两次成功的读取操作之间的一个超时,非请求整个主体数据的超时时间,如果在这个超时时间内,客户端没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60.
  (4)设置参数:send_timeout 25;
  用户指定响应客户端的超时时间。这个超时时间仅限于两个链接活动之间的事件,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接,默认值为60s,可以改为参考值25s
  Syntax: send_timeout time;
  Default: send_timeout 60s;
  Context: http, server, location
  参数作用:设置服务器端传送http响应信息到客户端的超时时间,这个超时时间仅仅为两次成功握手后的一个超时,非请求整个响应数据的超时时间,如在这个超时时间内,客户端没有收到任何数据,连接将被关闭。
  (九)PHP优化配置
  化设置:

  •   在http{}里面
  •   fastcgi_connect_timeout 240;
  •   fastcgi_send_timeout 240;
  •   fastcgi_read_timeout 240;
  •   fastcgi_buffer_size 64k;
  •   fastcgi_buffers 4 64k;
  •   fastcgi_busy_buffers_size 128k;
  •   fastcgi_temp_file_write_size 128k;
  •   #fastcgi_temp_path /data/ngx_fcgi_tmp;  需要有路径
  •   fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;
  •   PHP缓存 可以配置在server标签和http标签
  •   fastcgi_cache ngx_fcgi_cache;
  •   fastcgi_cache_valid 200 302 1h;
  •   fastcgi_cache_valid 301 1d;
  •   fastcgi_cache_valid any 1m;
  •   fastcgi_cache_min_uses 1;
  •   fastcgi_cache_use_stale error timeout invalid_header http_500;
  •   fastcgi_cache_key http://$host$request_uri;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633761-1-1.html 上篇帖子: Nginx伪静态配置和常用Rewrite伪静态规则 下篇帖子: 打造高性能nginx缓存服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表