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


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

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

    "
  1. Ubuntu에 Nginx 웹 서버를 설치하는 방법
  2. CentOS에 Nginx를 설치하는 방법
  3. 데비안에 Nginx를 설치하는 방법
  4. RHEL에 Nginx를 설치하는 방법
  5. "

    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 웹 서버 보안 및 강화에 대한 궁극적인 가이드를 확인하십시오.