>  기사  >  운영 및 유지보수  >  기억력이 쑥쑥! nginx가 크롤러를 가로채는 것을 기억하세요

기억력이 쑥쑥! nginx가 크롤러를 가로채는 것을 기억하세요

藏色散人
藏色散人앞으로
2023-03-30 16:35:261915검색

이 글은 크롤러를 차단하기 위해 주로 nginx를 소개하는 nginx에 대한 관련 지식을 제공합니다. 관심 있는 친구들은 함께 살펴보시면 좋습니다.

서문:

최근 특정 기간 동안 서버의 메모리가 미친 듯이 급증한 것을 발견했습니다. 처음에는 정상적인 업무로 인해 발생한 것으로 생각하고 서버 메모리를 업그레이드하여 문제를 발견했습니다. 아직 해결되지 않았습니다. (여기서 게을러서 처음에는 문제가 없었습니다. 문제가 발견되면 기본적으로 비즈니스 볼륨이 증가한 것입니다.)

즉시 nginx 로그를 확인하고 몇 가지 특이한 요청을 발견했습니다.

기억력이 쑥쑥! nginx가 크롤러를 가로채는 것을 기억하세요

이게 뭐지? 궁금해서 검색해 본 결과:

기억력이 쑥쑥! nginx가 크롤러를 가로채는 것을 기억하세요

잘됐네요. 서버를 집으로 보낼 뻔했어요.

빨리 해결하세요:

nginx 수준 해결책

크롤러이지만 위장되지 않고 모든 요청에 ​​사용자 에이전트가 포함되어 있으며 모두 동일하다는 것을 알았습니다. 그러면 해결하기 쉽습니다. 다음 코드로 이동하세요. (나는 docker를 적용합니다. 여기)

1, docker-compose

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

2, 디렉터리 구조

nginx
-----nginx.conf
-----agent-deny.conf
-----conf
----------xxxx01_server.conf
----------xxxx02_server.conf

3, agent-deny.conf

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;
}

4 그런 다음 AhrefsBot이 모든 요청에서 차단됩니다.

알리바바 클라우드 보안 그룹 차단

로그 분석 결과 실제로 요청한 IP는 일부 세그먼트에 불과하므로 다중 보장을 위해(알리바바 클라우드가 가장 빠르고 효과적이지만 유료는 다릅니다) )

IP 세그먼트:

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 = '/.htaccess') {
            return 404;
        }
        #禁止get请求下载.gitignore文件
        if ($request_uri = '/storage/.gitignore') {
            return 404;
        }
        #禁止get下载web.config文件
        if ($request_uri = '/web.config') {
            return 404;
        }
        try_files $uri $uri/ /index.php?$query_string;
    }

    location /oauth/token {
        #禁止get请求访问 /oauth/token
        if ($request_method = 'GET') {
            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 'Access-Control-Allow-Origin' '*';
        #add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        #add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token';
    }
}

직접 외부 네트워크 액세스 방향:

기억력이 쑥쑥! nginx가 크롤러를 가로채는 것을 기억하세요추천 튜토리얼:

nginx 튜토리얼

위 내용은 기억력이 쑥쑥! nginx가 크롤러를 가로채는 것을 기억하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제