1.添加参数隐藏Nginx版本号

vim /application/nginx/conf/nginx.conf

#http标签下添加
server_tokens off; #测试
[root@cobbler ~]# curl -I 172.16.1.15
HTTP/1.1 200 OK
Server: nginx #这里已经没有版本号了

2.更改源码隐藏Nginx软件名及版本号

#通过修改源码将Nginx及版本号替换为其他名称,更改完要重新编译
1. vim nginx-1.6.3/src/core/nginx.h #软件信息 #define NGINX_VERSION "2.2.2"
#define NGINX_VER "Peter/" NGINX_VERSION #define NGINX_VAR "Peter" 2. vim nginx-1.6.3/src/http/ngx_http_header_filter_module.c 49 static char ngx_http_server_string[] = "Server: Peter" CRLF; 3. vim nginx-1.6.3/src/http/ngx_http_special_response.c #报错页面信息展示 22 "<hr><center>" NGINX_VER "(http://www.cnblogs.com/Peter2014/)</center>" CRLF
29 "<hr><center>Peter</center>" CRLF
#重新编译后,进行测试
[root@cobbler nginx-1.6.3]# curl -I 172.16.1.15
HTTP/1.1 200 OK
Server: Peter

3.更改Nginx服务的默认用户

#方法1:修改配置文件
vim /application/nginx/conf/nginx.conf user nginx nginx; #方法2:编译时添加用户参数 ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.3 --with-http_stub_status_module --with-http_ssl_module

4.优化worker进程的数量

#一般而言,worker进程的数量应等于CPU的核数;对于高并发业务,worker进程数量可以等于核数的2倍。

#修改nginx配置文件
vim /application/nginx/conf/nginx.conf worker_processes 2; #查看CPU核心数量
[root@cobbler ~]# grep processor /proc/cpuinfo | wc -l
2 #查看物理CPU的个数
[root@cobbler ~]# grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l
1 #reload后检查结果
[root@cobbler ~]# ps -ef | grep nginx
root 48290 1 0 18:02 ? 00:00:00 nginx: master process sbin/nginx
nginx 54530 48290 0 20:25 ? 00:00:00 nginx: worker process
nginx 54531 48290 0 20:25 ? 00:00:00 nginx: worker process #注:uniq是一个去重命令,但注意aabb可以变为ab,abab则还是abab。所以去重之前要先用sort进行排序。

5.绑定不同worker进程到不同CPU核心上

#主要使用参数worker_cpu_affinity 配置worker和cpu的亲和度

vim /application/nginx/conf/nginx.conf

worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000; # 这里0001 0010 0100 1000是掩码,分别代表第1、2、3、4核cpu #假设worker进程数为4,cpu核心数为4,则掩码就为4位,分别对应不同的cpu核心。
#如果worker进程数为2,cpu核心数为4,则可以按照0101、1010为每个进程分配两个核心。
#八核cpu则按照00000001、00000010依次分配 #可以使用压力测试工具webbench进行压力测试,top观察每个cpu的使用率

6.Nginx事件处理模型优化

#Nginx的连接处理机制在不同的操作系统下会使用不同的I/O模型。Linux系统下使用epoll的I/O多路复用模型。
配置参数为use epoll,注意设置在events标签下,events区块用于设置连接进程。 vim /application/nginx/conf/nginx.conf events {
worker_connections 1024;
use epoll;
}

7.调整单个worker进程允许的客户端最大连接数

#参数worker_connections 20480;也是在events标签下设置;注意使用“ulimit -HSn 65535”设置单个进程的文件描述符的最大数量
vim /application/nginx/conf/nginx.conf events {
worker_connections 20480;
use epoll;
}

8.配置worker进程打开的最大文件数

#可以和ulimit的设置的数量一样,main标签下。

vim /application/nginx/conf/nginx.conf

worker_rlimit_nofile 65535;

9.开启高效文件传输模式

#sendfile()函数用于内核中进行两个文件描述符之间的数据拷贝,由于在内核运行,效率相比read write要高
#tcp_nopush参数允许将http response header和body的开始部分放在一个文件里进行发布,可以减少网络报文段的数量,提高I/O性能
#tcp_nodelay用于当数据发送时,内核不会马上发送,会等待更多的字节然后发送以提高I/O性能,如果小文件比较多就不要开启了,
#不然等待时间会比较长。
vim /application/nginx/conf/nginx.conf
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}

10.设置连接超时

#keepalive_timeout用于设置连接超时,当客户端长时间没有请求则关闭tcp连接
#client_header_timeout用于设置读取请求头数据的超时时间,防止客户端利用http协议进行攻击
#client_body_timeout用于设置读取请求主体的超时时间,指2次成功读取之间的间隔
#send_timeout用于设置用户两次活动之间的间隔 vim /application/nginx/conf/nginx.conf http {
keepalive_timeout 60;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 25;
}

11.限制上传文件的大小

#client_max_body_size用于限制请求主体的大小

vim /application/nginx/conf/nginx.conf

http {
client_max_body_size 8m;
}

最新文章

  1. 关于Java语言和面向对象记录
  2. CSS3 模块
  3. div里面的内容超出自身高度时,显示省略号
  4. vs2010 调试C++程序 快捷键
  5. html的显示消息和留言板
  6. 纠正一个概念:类就有VMT,各实例不过是共享这个VMT而已
  7. 基于C++ 苹果apns消息推送实现(2)
  8. 使用zabbix_agent监控第一台windows服务器
  9. 在线用户数-Constants
  10. CentOS6.8通过yum安装MySQL5.7
  11. 简单搭建ES6的环境
  12. crypto在web的使用
  13. jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
  14. js实现reqire中的amd,cmd功能
  15. Linux只下载不安装软件包
  16. 自动化部署--shell脚本--2
  17. drupal7 带表达式条件的update
  18. 树莓派3b添加python时间同步脚本
  19. 使用K2时提示未能加载文件或程序集Microsoft.IdentityModel等
  20. VC中编译出现error LNK2005:xx already defined in xxx.obj问题解决。

热门文章

  1. 《Unix网络编程卷1:套接字联网API》读书笔记
  2. 【BZOJ3244】【NOI2013】树的计数(神仙题)
  3. Python3 字典 fromkeys()方法
  4. springboot读取自己定义的配置文件的方式以及使用joda_time来处理时间日期
  5. python学习(九) 网络编程学习--简易网站服务器
  6. WPF系列之三:实现类型安全的INotifyPropertyChanged接口,可以不用“Magic string” 么?
  7. CentOS7.2下安装mongoDB3.2.8
  8. NOIP模拟赛17
  9. Python学习笔记(四十七)SMTP发送邮件
  10. 「七天自制PHP框架」应用:Model外键链接