

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

# 프록시 서버 구성
<a name="nodejs-platform-proxy"></a>

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

기본적으로 Elastic Beanstalk는 요청을 포트 5,000의 애플리케이션에 전달하도록 프록시를 구성합니다. `PORT` [환경 속성](create_deploy_nodejs.container.md#nodejs-platform-console)을 기본 애플리케이션이 수신 대기하는 포트로 설정하여 기본 포트를 재정의할 수 있습니다.

**참고**  
애플리케이션이 수신 대기하는 포트는 NGINX 서버가 로드 밸런서에서 요청을 받기 위해 수신 대기하는 포트에 영향을 주지 않습니다.

**플랫폼 버전에서 프록시 서버 구성**  
모든 AL2023/AL2 플랫폼은 균일한 프록시 구성 기능을 지원합니다. AL2023/AL2를 실행하는 플랫폼 버전에서 프록시 서버를 구성하는 방법에 대한 자세한 내용은 [역방향 프록시 구성](platforms-linux-extend.proxy.md) 단원을 참조하세요.

## Amazon Linux AMI(이전 Amazon Linux 2)에서 프록시 구성
<a name="nodejs-platform-proxy.alami"></a>

Elastic Beanstalk Node.js 환경에서 Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)을 사용하는 경우 이 섹션의 정보를 읽어 보세요.

**참고**  
이 주제의 정보는 Amazon Linux AMI(AL1) 기반 플랫폼 브랜치에만 적용됩니다. AL2023/AL2 플랫폼 브랜치는 이전 Amazon Linux AMI(AL1) 플랫폼 버전과 호환되지 않으며 *다른 구성 설정이 필요*합니다.
 [2022년 7월 18일](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html), Elastic Beanstalk는 Amazon Linux AMI(AL1)에 기반한 모든 플랫폼 브랜치의 상태를 **사용 중지**로 설정했습니다. 완전 지원이 가능한 현재 Amazon Linux 2023 플랫폼 브랜치로 마이그레이션하는 방법에 대한 자세한 내용은 [Elastic Beanstalk Linux 애플리케이션을 Amazon Linux 2023 또는 Amazon Linux 2로 마이그레이션](using-features.migration-al.md)을(를) 참조하세요.

### 기본 프록시 구성 확장 및 재정의 — Amazon Linux AMI (AL1)
<a name="nodejs-platform-proxy.alami.extending"></a>

Node.js 플랫폼은 역방향 프록시를 사용하여 인스턴스에서 포트 80의 요청을 포트 8081에서 수신 중인 애플리케이션으로 전달합니다. Elastic Beanstalk는 확장하거나 자체 구성으로 완전히 재정의할 수 있는 기본 프록시 구성을 제공합니다.

기본 구성을 확장하려면 구성 파일로 `.conf`에 `/etc/nginx/conf.d` 파일을 추가합니다. 구체적인 예제는 [Node.js를 실행하는 EC2 인스턴스에서 HTTPS 종료](https-singleinstance-nodejs.md) 단원을 참조하세요.

Node.js 플랫폼은 PORT 환경 변수를 프록시 서버가 트래픽을 전달할 포트로 설정합니다. 이 코드 변수를 읽고 애플리케이션의 포트를 구성합니다.

```
    var port = process.env.PORT || 3000;

    var server = app.listen(port, function () {
        console.log('Server running at http://127.0.0.1:' + port + '/');
    });
```

기본 NGINX 구성은 `127.0.0.1:8081`의 `nodejs`라는 업스트림 서버로 트래픽을 전달합니다. 기본 구성을 제거하고 [구성 파일](ebextensions.md)에 사용자 지정으로 구성할 수 있습니다.

**Example .ebextensions/proxy.config**  
다음은 기본 구성을 제거하고 트래픽을 8081 대신 포트 5000으로 전달하도록 사용자 지정한 구성을 추가하는 예제입니다.  

```
files:
  /etc/nginx/conf.d/proxy.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      upstream nodejs {
        server 127.0.0.1:5000;
        keepalive 256;
      }

      server {
        listen 8080;

        if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
            set $year $1;
            set $month $2;
            set $day $3;
            set $hour $4;
        }
        access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
        access_log  /var/log/nginx/access.log  main;

        location / {
            proxy_pass  http://nodejs;
            proxy_set_header   Connection "";
            proxy_http_version 1.1;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        gzip on;
        gzip_comp_level 4;
        gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        location /static {
            alias /var/app/current/static;
        }

      }

  /opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh:
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/bin/bash -xe
      rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
      service nginx stop 
      service nginx start

container_commands:
  removeconfig:
    command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"
```
예제 구성(`/etc/nginx/conf.d/proxy.conf`)은 `/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf`의 기본 구성을 토대로 기본 서버 블록과 압축 및 로그 설정, 정적 파일 매핑을 포함합니다.  
`removeconfig` 명령은 프록시 서버가 사용자 지정 구성을 사용하도록 컨테이너의 기본 구성을 제거합니다. Elastic Beanstalk는 각 구성이 배포될 때 기본 구성을 다시 만듭니다. 이 문제를 설명하기 위해 다음 예에서는 post-configuration-deployment hook(`/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh`)가 추가됩니다. 이렇게 하면 기본 구성이 제거되고 프록시 서버가 다시 시작됩니다.

**참고**  
기본 구성은 이후 Node.js 플랫폼 버전에서 바뀔 수 있습니다. 사용자 지정할 때는 호환성이 보장되도록 최신 버전의 구성을 사용하십시오.

기본 구성을 재정의하는 경우 정적 파일 매핑과 GZIP 압축을 정의해야 합니다. 이는 플랫폼이 [표준 설정](create_deploy_nodejs.container.md#nodejs-namespaces)을 적용할 수 없기 때문입니다.