zoukankan      html  css  js  c++  java
  • 四十二、LAMP与LNMP web架构深度优化实战-第一部

    1.nginx.conf配置文件基本参数优化

       1.1 隐藏nginx header内版本号信息

                 一些特定的系统及服务漏洞一般都和特定的软件版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称及版本等信息),这样黑客无法猜到有漏洞的服务是否是对应服务的版本,从而确保web服务最大的安全。

         [root@djw1 ~]# curl -I 192.168.0.102
         HTTP/1.1 200 OK
         Server: nginx/1.6.2  --优化隐藏这个版本号
          Date: Fri, 14 Jun 2019 08:25:07 GMT
          Content-Type: text/html
          Connection: keep-alive
         X-Powered-By: PHP/5.3.27

    配置参数如下:

     [root@djw1 ~]# cat /application/nginx/conf/nginx.conf 
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        server_tokens off;
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
       
        include extra/www.conf;
       # include extra/bbs.conf;
        }

    测试:

           }
    [root@djw1 ~]# /application/nginx/sbin/nginx -s reload
    [root@djw1 ~]# curl -I 192.168.0.102                 
    HTTP/1.1 200 OK
    Server: nginx  --版本消失
    Date: Fri, 14 Jun 2019 08:39:15 GMT
    Content-Type: text/html
    Connection: keep-alive

     1.2更改掉nginx的默认用户及用户组nobody 

            nginx服务启动,使用的默认用户是nobody,为了防止黑客猜到这个用户,我们需要更改下特殊的用户名,提供nginx服务用。

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

       解决:1.编译的时候指定就会将nginx.conf中的nobody覆盖

         ./configure --user=nginx --group=nginx --prefix=/application/nginx1..6.2 --with-http_stub_status_module --with_ssl_module

        useradd nginx -s /sbin/nologin -M  不需要有系统登陆权限,禁止登陆

       检测:ps -ef|grep nginx

    root     25042     1  0 04:23 ?        00:00:00 nginx: master process /application/nginx/sbin/nginx
    nginx    25738 25042  0 16:39 ?        00:00:00 nginx: worker process  

      1.3 配置nginx worker进程个数

         在高并发场景,我们需要事先启动更多的nginx进程以保证快速响应并处理用户的请求。可以按照CPU的核数设置,查看cpu的核数 grep "physical id" /proc/cpuinfo 

    [root@djw1 conf]# cat nginx.conf.default
    worker_processes  1;
       1.4根据cpu核数进行nginx进程优化
          默认情况nginx的多个进程可能跑到一个cpu,本节是分配不同的进程给不同的cpu处理,达到充分利用硬件多核多CPU的目的
         woker_cpu_affinity 0001 0010 0100 1000(4核cpu)
    命令:top是查看linux性能指标的一个命令,按1,查看cpu的核数
               tastset可以指定进程运行在某个cpu上。

       1.5事件处理模型优化

             nginx的连接处理机制在于不同的操作系统采用不同的IO模型,在linux使用epoll的IO多路复用模型,在windwos使用icop等。当然还有其他操作系统

              根据操作系统的不同,选择不同的模型。

              在nginx.conf的event事件中进行配置

          1.6 调整单个进程允许的客户端最大连接数

             这个值根据具体服务器性能和程序的内存使用量来指定

             也是在event事件中进行配置

           1.7 如果定义了大量名字,或者定义了非常长的名字,那就需要在http配置块中调整server_names_hash_max_size和server_names_hash_bucket_size的值

            1.8设置连接超时事件

         keepalive_timeout 60 会话多长事件断掉

         client_header_timeout  15 客户端连接上,不发送数据,就会断掉(header)

         client_body_timeout  15   客户端连接上,不发送数据,就会断掉(body)

         send_timeout 15  两个连接活动之间的事件,就是发送时间,如果超过这个时间,客户端没有任何活动,nginx将会关闭连接

             1.9上传文件大小限制

           主配置文件里面加入如下参数:    client_max_body_size 10m

            会在curl IP -I处显示:Content-Length

           

            2.0 fastcgi 优化(配合PHP引擎动态服务)

               fastcgi_connect_timeout 300; (指定连接到后端FastCGI的超时时间)

               fastcgi_send_timeout 300;建立连接,向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间

              fastcgi_read_timeout 300;建立连接,接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间

              fastcgi_buffer_size 64K;将读取的内容缓冲区,第一个缓冲区

               fastcgi_buffers  4  64k;用多少多大的缓冲区来应答请求等等

             2.1隐藏软件名称  :防止黑客攻击,需要改head和错误提示,可以百度解决!

    人的行为受潜意识的控制

    1.价值观  2.信念  3.能力

          

                  

              

  • 相关阅读:
    如何提取Redis中的大KEY
    VIM标记 mark 详解
    JAVA编写的一个简单的Socket实现的HTTP响应服务器
    onenote 直接发布文章到CSDN
    guava学习笔记--字符串处理
    带打印子结点的自底向上算法
    动态规划算法3
    动态规划算法2
    一个菜鸟学习动态规划算法的过程
    php取得当前时间函数
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/11716817.html
Copyright © 2011-2022 走看看