Elastic Beanstalk에서 프록시 서버 설정하기 - AWS Elastic Beanstalk

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

Elastic Beanstalk에서 프록시 서버 설정하기

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

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

참고

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

플랫폼 버전에서 프록시 서버 구성

모든 AL2 02/3 AL2 플랫폼은 균일한 프록시 구성 기능을 지원합니다. AL2AL2023/를 실행하는 플랫폼 버전에서 프록시 서버를 구성하는 방법에 대한 자세한 내용은 의 역방향 프록시 구성 섹션을 확장하십시오. Elastic Beanstalk Linux 플랫폼 확장

Node.jsElastic Beanstalk 환경에서 아마존 리눅스 플랫폼 버전 (AMI아마존 리눅스 2 이전 버전) 을 사용하는 경우, 이 섹션의 정보를 읽어보세요.

참고
  • 이 항목의 정보는 Amazon Linux AMI (AL1) 기반 플랫폼 브랜치에만 적용됩니다. AL2023/ AL2 플랫폼 브랜치는 이전 Amazon Linux AMI (AL1) 플랫폼 버전과 호환되지 않으며 다른 구성 설정이 필요합니다.

  • 2022년 7월 18일, Elastic Beanstalk는 아마존 리눅스 () 를 기반으로 하는 모든 플랫폼 브랜치의 상태를 은퇴로 설정했습니다. AMI AL1 완전 지원이 가능한 현재 Amazon Linux 2023 플랫폼 브랜치로 마이그레이션하는 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 애플리케이션을 Amazon Linux 2023 또는 Amazon Linux 2로 마이그레이션을(를) 참조하세요.

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

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

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:8081nodejs라는 업스트림 서버로 트래픽을 전달합니다. 기본 구성을 제거하고 구성 파일에 사용자 지정으로 구성할 수 있습니다.

예 .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 후크 (/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh) 가 추가되었습니다. 이렇게 하면 기본 구성이 제거되고 프록시 서버가 다시 시작됩니다.

참고

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

기본 구성을 재정의하는 경우 정적 파일 매핑과 GZIP 압축을 정의해야 합니다. 이는 플랫폼이 표준 설정을 적용할 수 없기 때문입니다.