• nginx优化


    1: 保持Nginx的升级

    目前Nginx的稳定版本为1.14.0,最好升级到最新版本,官方的release note修复了很多bug,任何一款产品的生产环境都不想在bug风险下运行的。
    另外,虽然安装包安装比通过源代码编译安装更容易,但后一个选项有两个优点:

    1.它允许您将额外的模块添加到Nginx中(如more_header,mod_security),

    2.它总是提供比安装包更新的版本,在Nginx网站上可看release note。

    2.注释不用的Nginx模块

    ./configure --without-module1 --without-module2 --without-module3
    例如:
    ./configure --without-http_dav_module --withouthttp_spdy_module
    #注意事项:配置指令是由模块提供的。确保你禁用的模块不包含你需要使用的指令!在决定禁用模块之前,应该检查Nginx文档中每个模块可用的指令列表。

    3: 在Nginx配置中禁用server_tokens项

    server_tokens在打开的情况下会使404页面显示Nginx的当前版本号。这样做显然不安全,因为黑客会利用此信息尝试相应Nginx版本的漏洞。
    只需要在nginx.conf中http模块设置server_tokens off即可,禁用的效果是在404时不显示版本号。例如:

    复制代码
    server {
        listen 192.168.1.1:80;
        Server_tokens off;
        server_name tecmintlovesnginx.com www.xxx.com;
        access_log /var/www/logs/xxx.access.log;
        error_log /var/www/logs/xxx.error.log error;
        root /var/www/xxx.com/public_html;
        index index.html index.htm;
    }
    #重启Nginx后生效:
    复制代码

     4: 禁止非法的HTTP User Agents

    User Agent是HTTP协议中对浏览器的一种标识,禁止非法的User Agent可以阻止爬虫和扫描器的一些请求,防止这些请求大量消耗Nginx服务器资源。
    为了更好的维护,最好创建一个文件,包含不期望的user agent列表例如/etc/nginx/blockuseragents.rules包含如下内容:

    复制代码
    map $http_user_agent $blockedagent {
        default 0;
        ~*malicious 1;
        ~*bot 1;
        ~*backdoor 1;
        ~*crawler 1;
        ~*bandit 1;
    }
    然后将如下语句放入配置文件的server模块内:
    include /etc/nginx/blockuseragents.rules;
    并加入if语句设置阻止后进入的页面:
    复制代码

    Nginx:

    复制代码
    include /*/nginx/blockuseragents.rules;
    server {
         if ($blockedagent) {
              return 403;
         }       
         Nginx file       
    }
    复制代码

    5.禁用不使用的HTTP   server模块

    if ($request_method !~ ^(GET|HEAD|POST)$) {
    return 444;
    }

    6.设置缓冲区容量上限

    server 模块

    client_body_buffer_size 1k;
    client_header_buffer_size 1k;
    client_max_body_size 1k;
    large_client_header_buffers 2 1k;
    #设置后,不管多少HTTP请求都不会使服务器系统的缓冲区溢出了。

    7.限制最大连接数

    在http模块中,server模块外设置limit_conn_zone可以设置联机的IP

    在https,server or location哦明快设置limit_conn 可以设置ip的最大连接数

    limit_conn_zone $binary_remote_addr zone=addr:5m;
    limit_conn addr 1;
    复制代码
    include /*/nginx/blockuseragents.rules;
    limit_conn_zone $binnary_remove_addr zone=addr:5m;
    server {
         if ($blockedagent) {
              return 403;
         }       
         if ($request_method !~ ^(GET|GEAD|POST)$) {
              return 444;
         }   
         limit_conn addr 1;
         listen           192.168.1.1:80:
         server_tokens   off;
         Nginx file       
    }
    复制代码

    8.设置监控日志

    可以筛选{

    Client_ip

    浏览器类型

    HTTP requests 类

    请求内容

    服务器响应的内容

    }

    9.禁用图片外连接到自己的服务区

    这样会加大对服务器带宽的压力

    复制代码
    location /img/ {
          valid_referers none blocked 192.168.1.1;
            if ($invalid_referer) {
              return 403;
          }
    }
    复制代码

    10.禁用SSL并且之打开TLS

    这个看情况自定义,不是非要禁用的

    ssl_protocols TLSv1 TSLv1.1 TSLv1.2;
    复制代码
    include /*/nginx/blockuseragents.rules;
    limit_conn_zone $binnary_remove_addr zone=addr:5m;
    server {
         if ($blockedagent) {
              return 403;
         }       
         if ($request_method !~ ^(GET|GEAD|POST)$) {
              return 444;
         }
         ssl_protocols TLSv1 TSLv1.1 TSLv1.2; limit_conn addr 1; listen 192.168.1.1:80: server_tokens off; Nginx file }
    复制代码

    11.HTTPS 收费项

    阿里云有HTTPS认证,有免费的单站点认证以及收费的全战HTTPS

    详情跳转:https://www.cnblogs.com/chenwz/p/9401705.html#4039143

    12.如果安装了https,就把所有的流量定向到https

    return 301 https://$server_name$request_uri;

    加在access_log日至模块的上面一行

  • 相关阅读:
    python爬虫学习(7) —— 爬取你的AC代码
    python爬虫学习(6) —— 神器 Requests
    python爬虫学习(5) —— 扒一下codeforces题面
    python爬虫学习(4) —— 手刃「URP教务系统」
    听说你叫爬虫(3) —— 模拟登陆
    python爬虫学习(2) —— 爬一下ZOL壁纸
    python爬虫学习(1) —— 从urllib说起
    数据结构/ 串的模式匹配法 / kmp算法与next数组的构造
    ADWORLD web/PHP2
    ADWORLD web/upload1
  • 原文地址:https://www.cnblogs.com/guarderming/p/10571650.html
Copyright © 2020-2023  润新知