关于NGINX的隐藏版本信息,需要源码编译,应具备相关的linux源码编译知识

1.隐藏版本号,修改http头信息,防止回显版本号。

1.1将下载完成的nginx源码包,解压到需要放置的位置(推荐放入/usr/local/src)内
1.2进入源码文件夹,打开nginx的软件版本号的文件
  vim /usr/local/src/core/nginx.h
1.3修改的内容
   #define NGINX_VERSION  "1.18.0"
   #define NGINX_VER  "nginx/" NGINX_VERSION

改为:

 #define NGINX_VERSION   "8.8.2"

这行的版本号可以自行定义

 #define NGINX_VER  "XWS/" NGINX_VERSION  

这行是对名字的更改

注意:更改完成后记得检查一遍,保存退出

2.修改HTTP头信息中的connection字段,防止回显具体版本号

     vim /usr/local/src/http/ngx_http_header_filter_module.c
 更改: staticchar ngx_http_server_string[] = "Server: nginx" CRLF;  
 为: static charngx_http_server_string[] = "Server: TT" CRLF;

//server字段后面的文字就是访问网站返回的头信息。

注意:到此关于nginx源码编译前的工作完成,接下来就可以根据正常源码编译流程,对所需要的模块,进行相对应的选择,进行编译。

3.cpu上下文切换:将数据放到寄存器当中,处理一段时间后,跳去其他的核心上,减少这样的形式。

3.1 上下文切换解析:可以理解为,一站式解决,不需要四处奔波,在一个地方就可以把问题解决;

3.2 pstree -p | gerp nginx 查看nginx的进程数;

3.3 taskset -cp 7415 查看cpu的亲和力,在哪几个cpu上运行(7415是nginx的进程id);

3.3 对cpu设置cpu亲和力,绑定nginx的进程在哪个cpu上运行,绑定前,需要查看你的服务器是几核心的cpu;

//查看方法:使用top命令,按下数字1,显示的cpu是几核心,这样方便对nginx进程绑定cpu。

3.4 worker_cpu_affinity 0001 0010 0100 1000;
//因为我的cpu是四核心,所以设置的二进制形式如上述;

3.5 affinity 亲和力,设置完成后,taskset 查看进程后,发现cpu在固定的核心上运行。

4.select模型,poll模型,epoll模型

上述的三种nginx的工作模式都是nginx下的I0多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。

Epoll 在Linux2.6内核中正式引入。

4.1 epoll就势

Epoll 没有最大并发连接的限制,上限是最大可以打开文件的数目,这个数字一般远大于1024一般来说这个数目和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-max查看。

4.2 效率提升

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

4.3 Epoll 在这点上使用了“共享内存”,更省内存,效率更高

5.更改nginx工作的核心数

vim /usr/local/nginx/conf/nginx.conf
// 进入nginx的配置文件

worker_processes 1;
// 这一行的数字1改为你服务器的具体核心数目

worker_processes 4;
//我的服服务器为四核心,我更改为4

注意:修改nginx的配置完后,千万别忘记检查nginx语法问题,重新加载nginx的配置文件

/usr/local/nginx/sbin/nginx -t
// nginx检查语法

/usr/local/nginx/sbin/nginx -s reload
// 对nginx进行配置文件生效

分类: 暂无分类 标签: Linuxnginx

评论

暂无评论数据

暂无评论数据

目录