nginx基本优化详解(1)

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.conf
 worker_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-max

95061

2、 效率提升,Epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,Epoll的效率就会远远高于select和poll。

3、 内存拷贝,Epoll在这点上使用了“共享内存”,这个内存拷贝也省略了。

6.1.2、单个进程允许客户端最大并发连接数

worker_connections    ;

这个数值一般根据服务器性能和内存来制定,也就是单个进程最大连接数,实际nginx服务器最大并发值就是work进程数乘以这个数。

如何设置,可以根据一个进程启动所占内存,top -u nginx,但是实际我们填入一个102400,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!

[root@cjq11 ~]# top -u nginx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值