Nginx 서버의 보안 구성 및 보호 전략에 대한 자세한 설명
개요:
인터넷의 발달과 빅데이터 시대의 도래로 인해 웹 서버의 보안에 대한 관심이 더욱 높아지고 있습니다. 많은 웹 서버 중에서 Nginx는 고성능, 높은 동시 처리 기능, 유연한 모듈형 설계 등의 장점으로 인기가 높습니다. 이 기사에서는 액세스 제어, 역방향 프록시, 흐름 제한 및 HTTPS 구성 등을 포함하여 Nginx 서버의 보안 구성 및 보호 전략을 자세히 소개합니다.
1. 액세스 제어
- IP 블랙리스트 및 화이트리스트: Nginx의 허용 및 거부 지침을 구성하여 IP 블랙리스트 및 화이트리스트를 설정할 수 있습니다. Nginx 구성 파일에서 다음 코드 예시를 사용할 수 있습니다.
1 2 3 4 5 6 7 8 | http {
server {
location / {
deny 192.168.1.1;
allow all;
}
}
}
|
로그인 후 복사
위 구성에서는 IP 192.168.1.1로 접근이 거부되고, 그 외 IP는 정상적으로 접근이 가능합니다.
- 악의적인 요청 방지: 연결 수에 제한을 설정하고 액세스 빈도를 제한함으로써 악의적인 요청 공격을 방지할 수 있습니다. 이는 아래와 같이 Nginx 구성 파일의limit_conn 및limit_req 지시문을 사용하여 달성할 수 있습니다.
1 2 3 4 5 6 7 8 | 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. 역방향 프록시
- 실제 IP 숨기기: 역방향 프록시를 사용하여 실제 IP를 숨기고 서버의 보안을 보호하세요. 다음 구성 코드를 사용할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | http {
server {
location / {
proxy_pass http:
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 2 3 4 5 6 7 8 9 10 11 | http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
location / {
proxy_pass http:
}
}
}
|
로그인 후 복사
위 구성에서는 backend1.example.com 및 backend2.example.com의 서버로 요청이 균등하게 전송됩니다.
3. 현재 제한
- 액세스 속도 제어: Nginx의limit_req 지시문을 구성하여 악의적인 요청의 공격을 피하기 위해 각 IP의 액세스 속도를 제한할 수 있습니다. 다음 구성 코드를 사용할 수 있습니다:
1 2 3 4 5 6 7 8 | 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으로 설정됩니다.
- 파일 업로드 크기 제한: Nginx의 client_max_body_size 지시어를 구성하면 대용량 파일 업로드가 서버 리소스를 차지하지 않도록 파일 업로드 크기를 제한할 수 있습니다. 다음 구성 코드를 사용할 수 있습니다.
1 2 3 4 5 6 | http {
server {
client_max_body_size 10m;
...
}
}
|
로그인 후 복사
위 구성에서는 파일 업로드 크기가 10MB로 제한됩니다.
4. HTTPS 구성
- SSL 인증서 생성: Let's Encrypt와 같은 도구를 사용하여 SSL 인증서를 생성하여 HTTPS 연결의 보안을 보장할 수 있습니다.
- HTTPS 연결 구성: 다음 구성 코드를 사용하여 HTTP 연결을 HTTPS 연결로 변환할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | server {
listen 80;
server_name example.com;
return 301 https:
}
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!