Rumah > Operasi dan penyelenggaraan > Nginx > Ingatan melonjak! Ingat pernah nginx memintas crawler

Ingatan melonjak! Ingat pernah nginx memintas crawler

藏色散人
Lepaskan: 2023-03-30 16:35:26
ke hadapan
1966 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang nginx, yang terutamanya memperkenalkan pemintas nginx terhadap crawler Rakan-rakan yang berminat boleh melihatnya bersama-sama.

Kata Pendahuluan:

Baru-baru ini, saya mendapati bahawa ingatan pelayan meroket secara mendadak dalam tempoh masa tertentu Pada mulanya, saya fikir ia disebabkan oleh perniagaan biasa . Selepas menaik taraf memori pelayan, saya mendapati bahawa ia masih tidak berfungsi; >Segera menyemak log nginx dan menemui beberapa permintaan luar biasa:

Ingatan melonjak! Ingat pernah nginx memintas crawlerApakah ini saya mencarinya serta-merta kerana ingin tahu, dan hasilnya ialah:

Ingatan melonjak! Ingat pernah nginx memintas crawlerLelaki yang baik, saya hampir tidak menghantar pelayan saya ke rumah ;

Selesaikan dengan cepat:

tahap nginx. penyelesaian

Saya mendapati bahawa walaupun ia adalah crawler, ia tidak menyamar, setiap permintaan Mereka semua mengandungi ejen pengguna, dan semuanya adalah sama, jadi mudah untuk menyelesaikannya kod: (Saya memohon docker di sini)

1. docker-compose

2 >
version: '3'
services:
  d_nginx:
    container_name: c_nginx
    env_file:
      - ./env_files/nginx-web.env
    image: nginx:1.20.1-alpine
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    links:
      - d_php
    volumes:
      - ./nginx/conf:/etc/nginx/conf.d
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/deny-agent.conf:/etc/nginx/agent-deny.conf
      - ./nginx/certs:/etc/nginx/certs
      - ./nginx/logs:/var/log/nginx/
      - ./www:/var/www/html
Salin selepas log masuk

4. Kemudian masukkan agent-deny.conf

< ini dalam setiap perkhidmatan 🎜>
nginx
-----nginx.conf
-----agent-deny.conf
-----conf
----------xxxx01_server.conf
----------xxxx02_server.conf
Salin selepas log masuk
Dengan cara ini, AhrefsBot akan dipintas dalam setiap permintaan.

if ($http_user_agent ~* (Scrapy|AhrefsBot)) {
    return 404;
}
if ($http_user_agent ~ "Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)|^$" ) {
    return 403;
}
Salin selepas log masuk
Pemintasan Kumpulan Keselamatan Awan Alibaba

server {
    include /etc/nginx/agent-deny.conf;
    listen 80;
    server_name localhost;
    client_max_body_size 100M;
    root /var/www/html/xxxxx/public;
    index index.php;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #客户端允许上传文件大小
    client_max_body_size 300M;

    #客户端缓冲区大小,设置过小,nginx就不会在内存里边处理,将生成临时文件,增加IO
    #默认情况下,该指令,32位系统设置一个8k缓冲区,64位系统设置一个16k缓冲区
    #client_body_buffer_size 5M;
    #发现设置改参数后,服务器内存跳动的幅度比较大,因为你不能控制客户端上传,决定不设置改参数

    #此指令禁用NGINX缓冲区并将请求体存储在临时文件中。 文件包含纯文本数据。 该指令在NGINX配置的http,server和location区块使用
    #可选值有:
    #off:该值将禁用文件写入
    #clean:请求body将被写入文件。 该文件将在处理请求后删除
    #on: 请求正文将被写入文件。 处理请求后,将不会删除该文件
    client_body_in_file_only clean;


    #客户端请求超时时间
    client_body_timeout 600s;

    location /locales {
       break;
    }

    location / {
        #禁止get请求下载.htaccess文件
        if ($request_uri = &#39;/.htaccess&#39;) {
            return 404;
        }
        #禁止get请求下载.gitignore文件
        if ($request_uri = &#39;/storage/.gitignore&#39;) {
            return 404;
        }
        #禁止get下载web.config文件
        if ($request_uri = &#39;/web.config&#39;) {
            return 404;
        }
        try_files $uri $uri/ /index.php?$query_string;
    }

    location /oauth/token {
        #禁止get请求访问 /oauth/token
        if ($request_method = &#39;GET&#39;) {
            return 404;
        }
        try_files $uri $uri/ /index.php?$query_string;
    }

    location /other/de {
        proxy_pass http://127.0.0.1/oauth/;
        rewrite ^/other/de(.*)$ https://www.baidu.com permanent;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass d_php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_connect_timeout 300s;
        fastcgi_send_timeout 300s;
        fastcgi_read_timeout 300s;
        include fastcgi_params;
        #add_header &#39;Access-Control-Allow-Origin&#39; &#39;*&#39;;
        #add_header &#39;Access-Control-Allow-Methods&#39; &#39;GET, POST, OPTIONS, PUT, DELETE&#39;;
        #add_header &#39;Access-Control-Allow-Headers&#39; &#39;DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token&#39;;
    }
}
Salin selepas log masuk
Menganalisis log juga mendapati bahawa sebenarnya, IP yang diminta hanya mempunyai beberapa segmen, jadi demi jaminan berganda (Alibaba Cloud adalah yang paling cepat berkesan , kesan terbaik, yang berbayar adalah berbeza)

Segmen IP:

Arah akses rangkaian luaran terus:

Tutorial disyorkan:
54.36.0.0
51.222.0.0
195.154.0.0
Salin selepas log masuk
tutorial nginx

Atas ialah kandungan terperinci Ingatan melonjak! Ingat pernah nginx memintas crawler. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan