四十四、nginx web 优化一

一、 隐藏 nginx header 版本号

在http://nginx.org/en/docs查看模块的使用帮助,这里修改的是server_tokens off

如下:

 

 

 

 修改:[root@djw1 ~]# vim  /application/nginx/conf/nginx.conf

 

 查看:

 

 

 

 二、隐藏服务名

   对于服务名也是要隐藏的,或者重启起名,这样黑客就不知道你是什么服务器了。

   思想:对于软件,服务商肯定不希望你隐藏服务名,这是一个品牌问题,所以只能在源码中修改,然后重现编译服务器,所以在真正生产中,就要想到这些信息,开始就进行设置好。

1.[root@djw3 nginx-1.17.6]# vim  /home/oldboy/tools/nginx-1.17.6/src/http/ngx_http_special_response.c

  

2.[root@djw3 nginx-1.17.6]# vim  /home/oldboy/tools/nginx-1.17.6/src/http/ngx_http_header_filter_module.c 

     

 

 3.查看并修改别人编译的文件用-V或者-v ,进行重新编译安装,重启查看即可。

[root@djw3 nginx-1.17.6]# /application/nginx/sbin/nginx -V
nginx version: nginx/1.17.6
built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)
built with OpenSSL 1.1.1g FIPS 21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/application/nginx1.17.6 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module

三、思想小结

 1.提升安全最低点,从简单、短板入手解决问题

    2.向有经验的人,优秀的网站公司学习。

    3.学习看官方文档,拿一手资料

    4.命令输出结果中含有需要过滤掉或者保留的内容时,命令自身可能有参数直接实现。

    5.掌握技术思想比解决问题本身更重要http://oldboy.blog.51cto.com/2561410/1196298

 四、更改nginx默认用户和用户组

 为了web安全,我们尽可能改掉所有软件的默认配置。

1)修改配置文件

[root@djw1 nginx]# grep "#user" ./conf/nginx.conf.default 

#user nobody;

[root@djw1 nginx]# useradd nginx  -M -s /sbin/nologin   

id  nginx--检查

2)编译安装(如果不指定一个用户,就是默认nodoby,那么即使修改了配置文件也是没有用的)

./configure --prefix=/application/nginx1.17.6 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module

可以看到主程序是root是没有修改的,其他都是nginx。

 五、更改主配置进程,相当于一个站点,多进程,这里是root和zuma两个进程

    useradd zuma

 将文件拷贝如图

 创建log的链接文件,修改权限,修改conf中nginx.conf。conf的配置文件和端口(80端口是root可以开启),最后启动。

  启动:/application/nginx/sbin/nginx -c /home/zuma/conf/nginx.conf(两个进程)

 六、配置nginx worker进程数

[root@djw1 ~]# cat /application/nginx/conf/nginx.conf
error_log logs/error.log;
worker_processes 2;

查看cpu个数(核数)top 按 1

[root@djw1 ~]# grep "physical id" /proc/cpuinfo
physical id : 0
physical id : 0
physical id : 0
physical id : 0

 七、配置多cpu核数

worker_processes 4;

worker_cpu_affinity 0001 0010 0100 1000 (4核,4个进程跑到不同的核数上)

八、nginx事件处理模型优化

events {
use epoll;
worker_connections 1024;
}

九、设置单个进程可以连接的最大连接数(一般一个网站1,2万并发,已经很牛了,全国能排前20)

 

events {
worker_connections 1024;
}

最大进程连接数Max==worker_connections * worker_processes

 

十、设置连接超时时间

keepalive_timeout 60;

#设置客户端连接保持会话的超时时间。超过这个时间,服务器会关闭该连接。

tcp_nodelay on;

#打开 tcp_nodelay在包含了 keepalive 参数才有效

client_header_timeout 15;

#设置客户端请求头读取超时时间。如超过这个时间,客户端还没有发送任何数据,Nginx 将返回 “Request time out(408)”错误。

client_body_timeout 15;

#设置客户端请求主体读取超时时间。如超过这个时间,客户端还没有发送任何数据,Nginx 将返回 “Request time out(408)”错误,默认值是 60。

send_timeout 15;

#指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没 有任何活动,Nginx 将会关闭连接。

 

posted @ 2021-06-19 15:29  小熊尤里  阅读(43)  评论(0编辑  收藏  举报