zoukankan      html  css  js  c++  java
  • 四十四、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 将会关闭连接。

  • 相关阅读:
    链表问题----反转部分单向链表
    HTTP请求详解
    链表问题----删除链表的中间节点和a/b处的节点
    链表问题----删除倒数第K个节点
    栈和队列----最大值减去最小值小于等于num的子数组的数量
    栈和队列----求最大子矩阵的大小
    TCP/IP、Http、Socket的区别
    栈和队列----生成窗口的最大值数组
    linux根文件系统制作,busybox启动流程分析
    linux 内核启动流程分析,移植
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/14903072.html
Copyright © 2011-2022 走看看