1、安装nginx隐藏版本号
1.1、查看百度web服务器
[root@cjq11 ~]# curl -I http://www.baidu.com
1.2、隐藏nginx服务器版本号
[root@cjq11 ~]# cd /usr/local/src/nginx-1.22.0/
[root@cjq11 nginx-1.22.0]# vim src/core/nginx.h
第13、14行修改版本号和服务器名称
[root@cjq11 nginx-1.22.0]# vim src/http/ngx_http_header_filter_module.c
49行nginx改为web
[root@cjq11 nginx-1.22.0]# vim src/http/ngx_http_special_response.c
#这个文件定义了http错误码的返回,有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我们把他隐藏起来.
新版本使用的是变量不修改,旧版本改为 web即可
2、修改nginx运行账号
编译安装nginx时若不指定--user=,--group=选项,默认是nobody用户
2.1、查看用户
[root@cjq11 ~]# ps -aux | grep nginx
2.2、创建用户
[root@cjq11 ~]# useradd -M -s /sbin/nologin nginx
修改配置文件(只改文件,没有用户就会报错!)
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.conf
第二行
改:
#user nobody;
为:
user nginx;
23、语法检测
[root@cjq11 ~]# nginx -t
2.4、重载nginx
[root@cjq11 ~]# nginx -s reload
3、设置Nginx运行进程个数
3.1、查看cpu个数
[root@cjq11 ~]# grep ^processor /proc/cpuinfo | wc -l
根据自己cpu个数修改下面进程数
3.2、设置nginx中进程数
进程数和cpu数相同即可(我这一个cpu,所以未作修改)
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.conf
第三行
worker_processes 1;
4、nginx运行cpu亲和力
这个要根据你的CPU进程数配置
4.1、2核CPU,开启2个进程
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 2;worker_cpu_affinity 01 10;
4.2、4核4线程配置
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 4;worker_cpu_affinity 0001 001 0100 1000;
4.3、8核8线程配置
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 8;worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
4.4、4线程的CPU跑两个进程
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 2;worker_cpu_affinity 0101 1010;
第一个进程在第一个和第三个cpu上运行,第二个和第四个cpu上运行,两个进程分别在这两个组合上轮询!
worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。
5、Nginx最多可以打开文件数
5.1、设置nginx最大可打开文件数
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.confworker_rlimit_nofile 102400; 在11行添加标红内容
当一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
5.2修改系统可以打开的最大文件数
5.2.1、临时修改
ulimit -n设定系统最多打开的文件数
[root@cjq11 ~]# ulimit -n 102400
[root@cjq11 ~]# ulimit -n
102400
5.2.2、永久修改
修改linux的软硬件限制文件/etc/security/limits.conf
[root@cjq11 ~]# vim /etc/security/limits.conf
在文件尾部添加如下代码:
* soft nofile 102400
* hard nofile 102400
5.2.3、重启测试
[root@cjq11 ~]# reboot
[root@cjq11 ~]# ulimit -n
102400
6、x事件处理模型
[root@cjq11 ~]# vim /usr/local/nginx/conf/nginx.conf
大概12行
events {use epoll;worker_connections 65535; #单个进程允许客户端最大并发连接数}
6.1、IO多路复用的机制
nginx采用epoll事件模型,select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。
6.1.1、epoll优势:
1、Epoll没有最大并发连接的限制,上限是最大可以打开文件的数目,这个数字一般远大于2048, 一般来说这个数目和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-max察看。
[root@cjq11 ~]# cat /proc/sys/fs/file-max95061
2、 效率提升,Epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,Epoll的效率就会远远高于select和poll。
3、 内存拷贝,Epoll在这点上使用了“共享内存”,这个内存拷贝也省略了。
6.1.2、单个进程允许客户端最大并发连接数
worker_connections ;
这个数值一般根据服务器性能和内存来制定,也就是单个进程最大连接数,实际nginx服务器最大并发值就是work进程数乘以这个数。
如何设置,可以根据一个进程启动所占内存,top -u nginx,但是实际我们填入一个102400,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!
[root@cjq11 ~]# top -u nginx