WEB,WAS

[WEB] Nginx 에서 Client IP 별 셋팅

IT-PAPA 2024. 1. 31. 06:04
반응형

아래는 주어진 조건에 따라 주석과 함께 자세한 Nginx 설정 예제입니다:

http {
    # 클라이언트 IP 주소를 기반으로 변수 설정
    geo $client_ip {
        default 0.0.0.0;
        192.168.1.1 1;  # 클라이언트 IP에 따라서 설정
        192.168.1.2 2;
        192.168.1.3 3;
        192.168.1.4 4;
        192.168.2.0/24 3;  # 클라이언트 IP에 따라서 설정, /24는 24비트 서브넷을 의미합니다.
        192.168.3.0/24 4;
        # 추가적인 클라이언트 IP에 대한 규칙을 추가하세요.
    }

    server {
        listen 80;
        server_name aaa.com;

        location /a/b/c/ {
            if ($client_ip) {
                # 클라이언트 IP별로 변수 설정
                set $rewrite_uri $uri;
                set $proxy_host bbb.com;
                set $header_value "default";

                # 클라이언트 IP에 따라 변수 값 변경
                if ($client_ip = 1) {
                    set $rewrite_uri /x/b/z$uri;
                    set $proxy_host bbb.com;
                    set $header_value "client_1";
                }

                if ($client_ip = 2) {
                    set $rewrite_uri /x/b/z$uri;
                    set $proxy_host bbb.com;
                    set $header_value "client_2";
                }

                if ($client_ip = 3) {
                    set $rewrite_uri /x/b/z$uri;
                    set $proxy_host bbb.com;
                    set $header_value "client_3";
                }

                if ($client_ip = 4) {
                    set $rewrite_uri /x/b/z$uri;
                    set $proxy_host bbb.com;
                    set $header_value "client_4";
                }

                # 리다이렉트 및 프록시 설정
                rewrite ^/a/b/c/(.*)$ $rewrite_uri break;
                proxy_pass http://$proxy_host;
                proxy_set_header Host $proxy_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;

                # 클라이언트 IP에 따라 헤더 설정
                add_header Custom-Header $header_value;
            }
        }

        location / {
            return 404;  # 다른 경로는 404 에러를 반환하거나 원하는 대응을 추가하세요.
        }
    }
}
728x90
반응형
LIST