

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Classic Load Balancer에 프록시 프로토콜 구성
<a name="enable-proxy-protocol"></a>

프록시 프로토콜은 연결을 요청하는 소스에서 연결이 요청된 대상으로 연결 정보를 전달하는 데 사용되는 인터넷 프로토콜입니다. Elastic Load Balancing은 사람이 읽을 수 있는 형식의 헤더를 가진 프록시 프로토콜 버전 1을 사용합니다.

기본적으로 프런트 엔드 및 백 엔드 연결 모두에서 TCP(Transmission Control Protocol)를 사용하면 Classic Load Balancer는 요청 헤더를 변경하지 않고 인스턴스로 요청을 전달합니다. 프록시 프로토콜을 활성화하면 사람이 읽을 수 있는 형식의 헤더가 소스 IP 주소, 대상 IP 주소, 포트 번호와 같은 연결 정보를 포함하는 요청 헤더에 추가됩니다. 이렇게 하면 헤더가 요청의 일부로 인스턴스에 전송됩니다.

**참고**  
 AWS Management Console 는 프록시 프로토콜 활성화를 지원하지 않습니다.

**Topics**
+ [프록시 프로토콜 헤더](#proxy-protocol)
+ [프록시 프로토콜을 활성화하기 위한 사전 조건](#proxy-protocol-prerequisites)
+ [를 사용하여 프록시 프로토콜 활성화 AWS CLI](#enable-proxy-protocol-cli)
+ [를 사용하여 프록시 프로토콜 비활성화 AWS CLI](#proxy-protocol-disable-policy-cli)

## 프록시 프로토콜 헤더
<a name="proxy-protocol"></a>

프록시 프로토콜 헤더는 백엔드 연결에 TCP를 사용하는 로드 밸런서를 가지고 있을 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다. 로드 밸런서가 클라이언트와 인스턴스 간의 트래픽을 가로채기 때문에 인스턴스의 액세스 로그에 발원 클라이언트가 아닌 로드 밸런서의 IP 주소가 포함됩니다. 요청의 첫 번째 줄을 분석해서 클라이언트의 IP 주소와 포트 번호를 알아낼 수 있습니다.

IPv6를 위한 헤더의 프록시 주소가 로드 밸런서의 퍼블릭 IPv6 주소가 됩니다. 이 IPv6 주소는 로드 밸런서의 DNS 이름에서 확인할 수 있는 IP 주소와 일치하며 `ipv6` 또는 `dualstack`으로 시작됩니다. 클라이언트가 IPv4에 연결되면 헤더의 프록시 주소는 로드 밸런서의 프라이빗 IPv4 주소가 되고, DNS 조회를 통해 확인할 수 없습니다.

프록시 프로토콜 줄은 캐리지 리턴과 라인 피드(`"\r\n"`)로 끝나는 단일 줄이며 다음의 형식을 가지고 있습니다.

```
PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"
```

**예제: IPv4**  
다음은 IPv4를 위한 프록시 프로토콜 줄의 예제입니다.

```
PROXY TCP4 198.51.100.22 203.0.113.7 35646 80\r\n
```

## 프록시 프로토콜을 활성화하기 위한 사전 조건
<a name="proxy-protocol-prerequisites"></a>

시작하기 전에 다음을 수행하십시오.
+ 로드 밸런서가 프록시 프로토콜이 활성화된 프록시 서버를 지원하지 않는지 확인합니다. 프록시 서버와 로드 밸런서 모두에서 프록시 프로토콜이 활성화된 경우에는 로드 밸런서가 프록시 서버에서 이미 헤더를 가지고 있는 요청에 또 다른 헤더를 추가합니다. 인스턴스의 구성 방법에 따라 이러한 중복이 오류를 일으킬 수 있습니다.
+ 인스턴스가 프록시 프로토콜 정보를 처리할 수 있는지 확인합니다.
+ 리스너 설정이 프록시 프로토콜을 지원하는지 확인합니다. 자세한 내용은 [Classic Load Balancer의 리스너 구성](using-elb-listenerconfig-quickref.md) 단원을 참조하십시오.

## 를 사용하여 프록시 프로토콜 활성화 AWS CLI
<a name="enable-proxy-protocol-cli"></a>

프록시 프로토콜을 활성화하려면 `ProxyProtocolPolicyType` 유형의 정책을 생성한 다음 인스턴스 포트에서 정책을 활성화해야 합니다.

다음 단계를 통해 `ProxyProtocolPolicyType` 유형의 로드 밸런서를 위한 새 정책을 생성하고 새롭게 생성된 정책을 포트 `80`의 인스턴스로 설정한 다음, 정책이 활성화되었는지 확인합니다.

**로드 밸런서에 대한 프록시 프로토콜을 활성화하려면**

1. (선택 사항) Elastic Load Balancing이 지원하는 정책의 목록을 확인하려면 아래 [describe-load-balancer-policy-types](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policy-types.html) 명령을 사용하세요.

   ```
   aws elb describe-load-balancer-policy-types
   ```

   응답에는 지원되는 정책 유형의 이름과 이에 대한 설명이 포함되어 있습니다. 다음은 `ProxyProtocolPolicyType` 유형에 대한 출력을 보여줍니다.

   ```
   {
       "PolicyTypeDescriptions": [
           ...
           {
               "PolicyAttributeTypeDescriptions": [
                   {
                       "Cardinality": "ONE",
                       "AttributeName": "ProxyProtocol",
                       "AttributeType": "Boolean"
                   }
               ],
               "PolicyTypeName": "ProxyProtocolPolicyType",
               "Description": "Policy that controls whether to include the IP address and port of the originating 
   request for TCP messages. This policy operates on TCP/SSL listeners only"
           },
           ...
       ]
   }
   ```

1. 프록시 프로토콜을 활성화하는 정책을 생성하려면 아래 [create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html) 명령을 사용하세요.

   ```
   aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-ProxyProtocol-policy --policy-type-name ProxyProtocolPolicyType --policy-attributes AttributeName=ProxyProtocol,AttributeValue=true
   ```

1. 새로 생성된 정책을 지정된 포트에서 활성화하려면 아래 [set-load-balancer-policies-for-backend-server](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-for-backend-server.html) 명령을 사용하세요. 이 명령이 현재 활성화된 정책 세트를 대체합니다. 따라서 `--policy-names` 옵션을 통해 목록에 추가 중인 정책(예: `my-ProxyProtocol-policy`)과 현재 활성화된 정책(예: `my-existing-policy`) 모두를 지정해야 합니다.

   ```
   aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names my-ProxyProtocol-policy my-existing-policy
   ```

1. (선택 사항) 프록시 프로토콜이 활성화되어 있는지 확인하려면 아래 [describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html) 명령을 사용하세요.

   ```
   aws elb describe-load-balancers --load-balancer-name my-loadbalancer
   ```

   응답에는 다음과 같이 `my-ProxyProtocol-policy` 정책이 포트 `80`에 연결되었음을 보여주는 정보가 포함되어 있습니다.

   ```
   {
       "LoadBalancerDescriptions": [
           {
               ...
               "BackendServerDescriptions": [
                   {
                       "InstancePort": 80, 
                       "PolicyNames": [
                           "my-ProxyProtocol-policy"
                       ]
                   }
               ], 
               ...
           }
       ]
   }
   ```

## 를 사용하여 프록시 프로토콜 비활성화 AWS CLI
<a name="proxy-protocol-disable-policy-cli"></a>

인스턴스에 연결된 정책을 비활성화한 다음, 나중에 활성화를 할 수 있습니다.

**프록시 프로토콜 정책을 비활성화하려면**

1. `--policy-names` 옵션에서 이를 생략하고 활성화된 상태를 유지하는 다른 정책(예: `my-existing-policy`)을 포함시켜 프록시 프로토콜 정책을 비활성화하려면 아래 [set-load-balancer-policies-for-backend-server](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-for-backend-server.html) 명령을 사용하세요.

   ```
   aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names my-existing-policy
   ```

   활성화할 다른 정책이 없는 경우에는 다음과 같이 `--policy-names` 옵션을 통해 빈 문자열을 지정합니다.

   ```
   aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names "[]"
   ```

1. (선택 사항) 정책이 비활성화되었는지 확인하려면 아래 [describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html) 명령을 사용하세요.

   ```
   aws elb describe-load-balancers --load-balancer-name my-loadbalancer
   ```

   응답에는 다음과 같이 정책에 연결된 포트가 없음을 보여주는 정보가 포함되어 있습니다.

   ```
   {
       "LoadBalancerDescriptions": [
           {
               ...
               "BackendServerDescriptions": [],
               ...
           }
       ]
   }
   ```