웹사이트 검색

NGINX에서 클라이언트 IP 주소를 기반으로 액세스를 제어하는 방법


NGINX 웹 서버 보안을 강화하는 방법에는 여러 가지가 있으며 그 중 하나는 IP 주소를 기반으로 한 액세스 제어입니다. 이 가이드에서는 NGINX에서 클라이언트의 IP 주소를 기반으로 액세스를 제어하여 웹 애플리케이션을 보호하는 방법을 설명합니다.

이 가이드에서는 NGINX 웹 서버가 설치되어 실행 중이라고 가정합니다. 그렇지 않으면 다음 가이드를 확인하세요.

  • Ubuntu에 Nginx 웹 서버를 설치하는 방법
  • CentOS에 Nginx를 설치하는 방법
  • 데비안에 Nginx를 설치하는 방법
  • RHEL에 Nginx를 설치하는 방법

NGINX에서 클라이언트 IP 주소를 기반으로 액세스 제어

NGINX의 ngx_http_access_module 모듈을 사용하면 특정 클라이언트 IP 주소에 대한 액세스를 제한할 수 있습니다. allowdeny 지시문을 사용하여 활성화할 수 있습니다.

이름에서 알 수 있듯이 allow 지시어는 특정 IP 주소, 네트워크, Unix 소켓 또는 모두(이전 엔터티에 대한 키워드)에 대한 액세스를 허용하고 deny 지시어는 액세스를 거부합니다. 특정 IP 주소, 네트워크, Unix 소켓 또는 모두에 대해.

두 지시문 모두 HTTP, 서버, 위치 및 limit_Exception 컨텍스트에서 유효합니다. 다음은 location 컨텍스트 내에서 allowdeny 지시문을 사용하여 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 주소, 네트워크 또는 UNIX 도메인 소켓의 요청은 거부됩니다.

NGINX는 표시된 대로 클라이언트에 403 금지 오류로 응답합니다.

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

cat /var/log/nginx/app_api_error.log debug

NGINX 웹 서버 보안 강화 팁에 대한 자세한 내용은 Nginx 웹 서버 보안 및 강화를 위한 최종 가이드를 확인하세요.