NGINX에서 클라이언트 IP 주소를 기반으로 액세스를 제어하는 방법
NGINX 웹 서버 보안을 강화하는 방법은 여러 가지가 있는데 그 중 하나가 IP 주소를 기반으로 한 접근 제어입니다. 이 가이드에서는 NGINX에서 클라이언트의 IP 주소를 기반으로 액세스를 제어하여 웹 애플리케이션을 보호하는 방법을 설명합니다.
이 가이드에서는 NGINX 웹 서버가 설치되어 실행 중이라고 가정합니다. 그렇지 않으면 다음 가이드를 확인하세요.
- "
- Ubuntu에 Nginx 웹 서버를 설치하는 방법
- CentOS에 Nginx를 설치하는 방법
- 데비안에 Nginx를 설치하는 방법
- RHEL에 Nginx를 설치하는 방법 "
NGINX에서 클라이언트 IP 주소를 기반으로 액세스 제어
NGINX의 ngx_http_access_module 모듈을 사용하면 특정 클라이언트 IP 주소에 대한 액세스를 제한할 수 있습니다. 허용 및 거부 지시문을 사용하여 활성화할 수 있습니다.
이름에서 알 수 있듯이 allow 지시문은 특정 IP 주소, 네트워크, Unix 소켓 또는 모두(이전 엔터티의 경우 키워드)에 대한 액세스를 허용하고 거부 지시문은 특정 IP 주소, 네트워크, Unix 소켓 또는 모두에 대한 액세스를 거부합니다.
두 지시문 모두 HTTP, 서버, 위치 및 limit_except 컨텍스트에서 유효합니다. 다음은 API 서비스에 대한 액세스를 제한하기 위해 위치 컨텍스트 내에서 허용 및 거부 지시문을 사용하는 예입니다.
upstream app_api { keepalive 100; server 10.1.1.50:5000; server 10.1.1.71:5001; } server { listen 80; server_name _; access_log /var/log/nginx/app_api_access.log main; error_log /var/log/nginx/app_api_error.log debug; root /usr/share/nginx/html/; location / { try_files $uri /api; } location /api { proxy_read_timeout 3600; proxy_connect_timeout 3600s; keepalive_timeout 15; send_timeout 300; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ; proxy_pass http://app_api$request_uri; #list of allowed IPs to access API allow 10.10.10.20; allow 10.10.40.29; allow 192.168.2.23; allow 192.168.10.0/24; deny all; } }
위의 예에서 프록시된 API 엔드포인트에 대한 액세스 요청은 10.10.10.20, 10.10.40.29, 192.168.2.23 IP 주소 및 192.168.10.0/24 네트워크의 IP 주소에 대해서만 허용됩니다. "다른 IP 주소나 네트워크 또는 UNIX 도메인 소켓의 요청은 거부됩니다.
NGINX는 표시된 대로 클라이언트에 403 금지 오류로 응답합니다.

/var/log/nginx/app_api_error.log 오류 로그를 확인하면 다음 스크린샷과 같은 항목을 찾을 수 있습니다.
# cat /var/log/nginx/app_api_error.log debug

NGINX 웹 서버 보안 강화 팁에 대한 자세한 내용은 Nginx 웹 서버 보안 및 강화에 대한 궁극적인 가이드를 확인하십시오.