[OLD] 자유게시판

nginx 서버 세팅 가이드(링크)에 추가하려고 합니다.

 

dos 어택 같은걸 막는 설정값을 추가하려고 합니다.

브라우저의 커넥션제한(ConnectionsPerHostname, 크롬의 경우6)이 있으므로 값을 설정해도 문제가 없을 것 같습니다.

 

nginx 세팅시 limit_req_zone, limit_conn_zone 등 설정하시는분 있나요?

또한 client_body_timeoutclient_header_timeout 등도 추가하려고 합니다. (이건 optional 로)

 

좋은 설정값을 공유해주세요. 감사합니다!

 

감사합니다!

  • profile

    nginx는 커넥션 수가 늘어나도 서버에 크게 부담을 주지 않으므로 limit_conn_zone이나 클라이언트 타임아웃은 아주 중요하지는 않다고 봅니다. 커넥션을 수천 개씩 사용하지 않는 이상, 커넥션 열어놓고 뭔 짓을 하든 노상관... 정상적인 사용자는 절대 차단되지 않도록 상당히 높은 값으로 해놓으면 됩니다.

     

    (한편, http2를 사용하면 브라우저당 1개의 커넥션만 사용하도록 하는 추세입니다. 6개는 옛날 얘기...)

     

    limit_req_zone은 상당히 쓸모가 있습니다. 그러나 사이트를 방문하는 순간 수십 개의 CSS, JS, 이미지 파일을 로딩하게 되므로 이걸 너무 낮게 해놓으면 한 페이지 로딩이 완료되기도 전에 제한에 걸려 버립니다. 반면, 이것까지 감안하여 너무 높게 해놓으면 index.php 무한 새로고침 공격에 방어할 수가 없게 됩니다.

     

    그래서 location ~ \.php$ 블럭 안에서 따로 limit_req_zone을 사용합니다. 부하가 많이 발생하는 PHP 요청은 초당 요청수를 한 자리 수로 제한하고, 부하가 거의 발생하지 않는 나머지 파일들은 아주 넉넉하게 제한하거나 아예 제한하지 않아도 됩니다. CSS 파일 따위 1초에 수천 번씩 요청해도 nginx는 눈 하나 깜빡하지 않거든요. 트래픽이 낭비될 뿐...

     

    burst 설정을 살짝 높여 주면 XE 메뉴 편집 화면이나 글쓰기 화면처럼 순간적으로 몇 차례 AJAX 요청이 발생하는 경우에도 차단되지 않도록 할 수 있습니다.

  • profile profile
    아하 그렇군요.
    https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/ 글을 참고하고 있고,
    최소한 스크립트키디 수준의 공격은 막도록 하고싶어서요.

서버에 요청 중입니다. 잠시만 기다려 주십시오...