Extra Form
PHP PHP 8.0
CMS WordPress

안녕하세요. 

 

이전에 모니터링 도구를 통해 웹사이트가 무작위로 짧은 시간 다운이 된다는 질문 글을 올렸습니다.

 

당시 엑세스 로그를 통해 확인하라는 답변을 받고, 엑세스 로그를 활성화 시켜보니, 악성 봇이 초당 과도한 요청? 을 보내는 바람에 php-fpm에서 해당 트래픽을 처리하느라 웹사이트가 표시되지 않는걸 보았습니다.

 

이 문제를 해결하기 위해 nginx에 초당 요청수를 제한하기 위해 다음의 코드를 적용시키기고 fail2ban으로 해당 ip를 밴 시키도록 만들었습니다.

 

limit_conn_zone $conn_limit zone=conn_limit_per_ip:10m;
limit_conn conn_limit_per_ip 35;

 

코드가 작동은 잘 됩니다만, 가끔씩 웹사이트를 접속해을때 정상적인 css나 js 등의 파일을 불러오지 못하는 일이 발생합니다 ;;

 

최대 동시 접속자 수가 많지 않아, 35도 충분히 큰 값이라고 생각합니다만.... 

 

제가 limit_conn의 사용법을 잘못 이해하고 있는건지, 혹은 다른 방법이 있는지 궁금합니다.

 

감사합니다.

 

  • profile

    이제는 수십 개의 리소스를 동시에 전송할 수 있는 HTTP/2가 주류이기 때문에, HTTP/1.1 시절에 만들어진 limit_conn 기능은 크게 의미가 없습니다. 커넥션보다는 실제 부하를 일으키는 요청을 통제해야 합니다. CSS, JS 등 일반 파일은 제외하고, PHP 요청을 처리하는 location 블럭 안에서 limit_req를 써보시는 것을 추천합니다.

  • profile ?
    안녕하세요 기진곰님! 그렇군요. 그런식으로 사용하는 거군요!! 알려주신 대로 기존 설정을 지우고 location ~ \.php$ { } 안에 바로 적용 했습니다.

    늘 알려주셔서 정말 감사합니다!!