

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

# 역방향 프록시 구성
<a name="platforms-linux-extend.proxy"></a>

모든 Amazon Linux 2 및 Amazon Linux 2023 플랫폼 버전은 nginx를 기본 역방향 프록시 서버로 사용합니다. Tomcat, Node.js, PHP 및 Python 플랫폼은 Apache HTTPD도 대안으로 지원합니다. 이러한 플랫폼에서 Apache를 선택하려면 `aws:elasticbeanstalk:environment:proxy` 네임스페이스의 `ProxyServer` 옵션을 `apache`로 설정합니다. 모든 플랫폼에서는 이 단원에 설명된 것처럼 일관된 방식으로 프록시 서버를 구성할 수 있습니다.

**참고**  
Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)에서는 프록시 서버를 다르게 구성해야 할 수 있습니다. 레거시 세부 정보는 이 가이드의 [해당 플랫폼 항목](concepts-all-platforms.md)에서 확인할 수 있습니다.

Elastic Beanstalk는 환경의 루트 URL(예: `http://my-env.elasticbeanstalk.com`)에 있는 기본 웹 애플리케이션으로 웹 트래픽을 전달하도록 환경 인스턴스에서 프록시 서버를 구성합니다.

기본적으로 Elastic Beanstalk는 포트 80에서 수신되는 요청을 포트 5000의 기본 웹 애플리케이션에 전달하도록 프록시를 구성합니다. 다음 예제와 같이 구성 파일에서 [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) 네임스페이스를 사용하는 `PORT` 환경 속성을 설정하여 이 포트 번호를 구성할 수 있습니다.

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  {{<main_port_number>}}
```

애플리케이션의 환경 변수 설정에 대한 자세한 내용은 [옵션 설정](ebextensions-optionsettings.md)을 참조하십시오.

애플리케이션은 프록시에 구성된 포트에서 수신 대기해야 합니다. `PORT` 환경 속성을 사용하여 기본 포트를 변경하면 코드에서 `PORT` 환경 변수의 값을 읽어 해당 포트에 액세스할 수 있습니다. 예를 들어 Go에서 `os.Getenv("PORT")`를 호출하거나 Java에서 `System.getenv("PORT")`를 호출합니다. 여러 애플리케이션 프로세스로 트래픽을 보내도록 프록시를 구성하는 경우 여러 환경 속성을 구성하고 프록시 구성 및 애플리케이션 코드 모두에서 해당 값을 사용할 수 있습니다. 또 다른 옵션은 포트 값을 `Procfile`의 명령 인수로 프로세스에 전달하는 것입니다. 자세한 내용은 [Buildfile 및 Procfile](platforms-linux-extend.build-proc.md)을 참조하세요.

## nginx 구성
<a name="platforms-linux-extend.proxy.nginx"></a>

Elastic Beanstalk는 nginx를 기본 역방향 프록시로 사용하여 애플리케이션을 Elastic Load Balancing 로드 밸런서에 매핑합니다. Elastic Beanstalk는 확장하거나 자체 구성으로 완전히 재정의할 수 있는 기본 nginx 구성을 제공합니다.

**참고**  
nginx `.conf` 구성 파일을 추가하거나 편집할 때는 UTF-8로 인코딩해야 합니다.

Elastic Beanstalk의 기본 nginx 구성을 확장하려면 애플리케이션 소스 번들의 `.platform/nginx/conf.d/`라는 폴더에 `.conf` 구성 파일을 추가합니다. Elastic Beanstalk nginx 구성에는 이 폴더의 `.conf` 파일이 자동으로 포함됩니다.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- {{other source files}}
```

`.platform/nginx/conf.d/`에 있는 구성 파일은 nginx 구성의 `http` 블록에 포함됩니다. 전역적으로 적용되는 구성에는 이 위치를 사용합니다.

기본 nginx `server` 블록 구성을 확장하려면 애플리케이션 소스 번들의 `.platform/nginx/conf.d/elasticbeanstalk/`라는 폴더에 `.conf` 구성 파일을 추가합니다. Elastic Beanstalk의 nginx 구성은 이 폴더에 있는 `.conf` 파일들을 `server` 블록 내에 포함합니다.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- elasticbeanstalk
|               `-- server.conf
`-- {{other source files}}
```

이 위치를 사용하여 추가 위치 블록, 사용자 지정 오류 페이지 또는 서버 수준 지시문 등 서버별 구성을 추가합니다. 다음 예제에서는 사용자 지정 위치 블록을 추가합니다.

**Example .platform/nginx/conf.d/elasticbeanstalk/server.conf**  

```
location /test {
    return 200 "Hello World!";
    add_header Content-Type text/plain;
}
```

Elastic Beanstalk의 기본 nginx 구성을 완전히 재정의하려면 `.platform/nginx/nginx.conf`의 소스 번들에 구성을 포함시킵니다.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- nginx.conf
`-- {{other source files}}
```

Elastic Beanstalk의 nginx 구성을 재정의하는 경우 `nginx.conf`에 다음 줄을 추가하여 [Elastic Beanstalk의 향상된 상태 보고 및 모니터링](health-enhanced.md), 자동 애플리케이션 매핑 및 정적 파일에 대한 Elastic Beanstalk 구성을 가져옵니다.

```
 include conf.d/elasticbeanstalk/*.conf;
```

## Apache HTTPD 설정
<a name="platforms-linux-extend.proxy.httpd"></a>

Tomcat, Node.js, PHP, Python 플랫폼에서는 nginx에 대한 대안으로 Apache HTTPD 프록시 서버를 선택할 수 있습니다. 이는 기본값이 아닙니다. 다음 예제는 Apache HTTPD를 사용하도록 Elastic Beanstalk를 구성합니다.

**Example .ebextensions/httpd-proxy.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
```
추가 구성 파일을 사용하여 Elastic Beanstalk 기본 Apache 구성을 확장할 수 있습니다. 또는 Elastic Beanstalk 기본 Apache 구성을 완전히 재정의할 수 있습니다.  
Elastic Beanstalk의 기본 Apache 구성을 확장하려면 애플리케이션 소스 번들의 `.conf`라는 폴더에 `.platform/httpd/conf.d` 구성 파일을 추가합니다. Elastic Beanstalk의 Apache 구성에는 이 폴더의 `.conf` 파일이 자동으로 포함됩니다.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   -- httpd
|      -- conf.d
|         -- port5000.conf
|         -- ssl.conf
-- index.jsp
```
예를 들어, 다음 Apache 2.4 구성은 포트 5000에 리스너를 추가합니다.  

**Example .platform/httpd/conf.d/port5000.conf**  

```
listen 5000
<VirtualHost *:5000>
  <Proxy *>
    Require all granted
  </Proxy>
  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
```
Elastic Beanstalk의 기본 Apache 구성을 완전히 재정의하려면 `.platform/httpd/conf/httpd.conf`의 소스 번들에 구성을 포함시킵니다.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   `-- httpd
|       `-- conf
|           `-- httpd.conf
`-- index.jsp
```
Elastic Beanstalk의 Apache 구성을 재정의하는 경우 `httpd.conf`에 다음 줄을 추가하여 [Elastic Beanstalk의 향상된 상태 보고 및 모니터링](health-enhanced.md), 자동 애플리케이션 매핑 및 정적 파일에 대한 Elastic Beanstalk 구성을 가져옵니다.  

```
IncludeOptional conf.d/elasticbeanstalk/*.conf
```