>  기사  >  운영 및 유지보수  >  Nginx 서버의 보안 구성 및 보호 전략에 대한 자세한 설명

Nginx 서버의 보안 구성 및 보호 전략에 대한 자세한 설명

WBOY
WBOY원래의
2023-08-04 18:25:452512검색

Nginx 서버의 보안 구성 및 보호 전략에 대한 자세한 설명

개요:
인터넷의 발달과 빅데이터 시대의 도래로 인해 웹 서버의 보안에 대한 관심이 더욱 높아지고 있습니다. 많은 웹 서버 중에서 Nginx는 고성능, 높은 동시 처리 기능, 유연한 모듈형 설계 등의 장점으로 인기가 높습니다. 이 기사에서는 액세스 제어, 역방향 프록시, 흐름 제한 및 HTTPS 구성 등을 포함하여 Nginx 서버의 보안 구성 및 보호 전략을 자세히 소개합니다.

1. 액세스 제어

  1. IP 블랙리스트 및 화이트리스트: Nginx의 허용 및 거부 지침을 구성하여 IP 블랙리스트 및 화이트리스트를 설정할 수 있습니다. Nginx 구성 파일에서 다음 코드 예시를 사용할 수 있습니다.
http {
    server {
        location / {
            deny 192.168.1.1;
            allow all;
        }
    }
}

위 구성에서는 IP 192.168.1.1로 접근이 거부되고, 그 외 IP는 정상적으로 접근이 가능합니다.

  1. 악의적인 요청 방지: 연결 수에 제한을 설정하고 액세스 빈도를 제한함으로써 악의적인 요청 공격을 방지할 수 있습니다. 이는 아래와 같이 Nginx 구성 파일의limit_conn 및limit_req 지시문을 사용하여 달성할 수 있습니다.
http {
    server {
        location / {
            limit_conn conn_limit_per_ip 10;
            limit_req zone=req_limit_per_ip burst=20 nodelay;
        }
    }
}

위 구성에서 IP당 동시 연결 수는 10개로 제한되며 IP당 요청 빈도는 10개로 제한됩니다. 초당 20개.

2. 역방향 프록시

  1. 실제 IP 숨기기: 역방향 프록시를 사용하여 실제 IP를 숨기고 서버의 보안을 보호하세요. 다음 구성 코드를 사용할 수 있습니다.
http {
    server {
        location / {
            proxy_pass http://backend;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
}

위 구성에서 요청은 backend1.example.com 및 backend2.example.com으로 전송되며 원래 요청의 실제 IP는 HTTP 헤더에 설정됩니다. .

  1. 로드 밸런싱: 역방향 프록시 및 로드 밸런싱을 통해 요청을 여러 백엔드 서버로 분산하여 시스템 성능과 안정성을 향상시킬 수 있습니다. 다음 구성 코드를 사용할 수 있습니다.
http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

위 구성에서는 backend1.example.com 및 backend2.example.com의 서버로 요청이 균등하게 전송됩니다.

3. 현재 제한

  1. 액세스 속도 제어: Nginx의limit_req 지시문을 구성하여 악의적인 요청의 공격을 피하기 위해 각 IP의 액세스 속도를 제한할 수 있습니다. 다음 구성 코드를 사용할 수 있습니다:
http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    server {
        location / {
            limit_req zone=req_limit_per_ip burst=20 nodelay;
        }
    }
}

위 구성에서 각 IP의 액세스 속도는 초당 10회로 제한되고 요청 버스트 횟수는 20으로 설정됩니다.

  1. 파일 업로드 크기 제한: Nginx의 client_max_body_size 지시어를 구성하면 대용량 파일 업로드가 서버 리소스를 차지하지 않도록 파일 업로드 크기를 제한할 수 있습니다. 다음 구성 코드를 사용할 수 있습니다.
http {
    server {
        client_max_body_size 10m;
        ...
    }
}

위 구성에서는 파일 업로드 크기가 10MB로 제한됩니다.

4. HTTPS 구성

  1. SSL 인증서 생성: Let's Encrypt와 같은 도구를 사용하여 SSL 인증서를 생성하여 HTTPS 연결의 보안을 보장할 수 있습니다.
  2. HTTPS 연결 구성: 다음 구성 코드를 사용하여 HTTP 연결을 HTTPS 연결로 변환할 수 있습니다.
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/ssl_certificate.pem;
    ssl_certificate_key /path/to/ssl_certificate_key.pem;
    ...
}

위 구성에서 HTTP 연결을 HTTPS 연결로 리디렉션하고 SSL 인증서와 개인 키를 구성합니다.

요약:
이 글에서는 액세스 제어, 역방향 프록시, 흐름 제한 및 HTTPS 구성 등을 포함한 Nginx 서버의 보안 구성 및 보호 전략을 소개합니다. 이러한 정책을 적절하게 구성하고 사용함으로써 서버와 웹사이트의 보안을 강화하고 시스템과 사용자의 데이터 보안을 보호할 수 있습니다. 그러나 다양한 환경과 요구 사항에 따라 대상 구성이 필요할 수 있으며 개발자는 실제 조건에 따라 선택하고 조정해야 한다는 점은 주목할 가치가 있습니다.

위 내용은 Nginx 서버의 보안 구성 및 보호 전략에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.