역방향 프록시 구성 - AWS Elastic Beanstalk

역방향 프록시 구성

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

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

참고

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

모든 Amazon Linux 2 플랫폼은 균일한 프록시 구성 기능을 지원합니다. Amazon Linux 2를 실행하는 새로운 Amazon Corretto 플랫폼 버전에서 프록시 서버를 구성하는 방법에 대한 자세한 내용을 보려면 Elastic Beanstalk Linux 플랫폼 확장에서 역방향 프록시 구성 섹션을 확장하십시오.

Amazon Linux AMI(이전 Amazon Linux 2)에서 프록시 구성

Elastic Beanstalk Java SE 환경에서 Amazon Linux AMI 플랫폼 버전(이전 Amazon Linux 2)을 사용하는 경우 이 단원의 추가 정보를 읽어 보십시오.

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

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- conf.d | `-- myconf.conf `-- web.jar

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

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- nginx.conf `-- web.jar

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

include conf.d/elasticbeanstalk/*.conf;

Scorekeep 샘플 애플리케이션의 다음과 같은 구성 예시는 Elastic Beanstalk의 기본 구성을 재정의하여 Java SE 플랫폼이 애플리케이션 소스 코드를 복사하는 /var/app/current의 하위 디렉터리 public에 있는 정적 웹 애플리케이션을 제공합니다. /api 로케이션은 트래픽을 /api/ 아래의 경로를 거쳐 포트 5000에서 수신 중인 Spring 애플리케이션으로 전달합니다. 다른 모든 트래픽은 루트 경로에 있는 웹 앱을 통해 제공됩니다.

.ebextensions/nginx/nginx.conf

user nginx; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofile 33282; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; include conf.d/*.conf; map $http_upgrade $connection_upgrade { default "upgrade"; } server { listen 80 default_server; root /var/app/current/public; location / { } location /api { proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } access_log /var/log/nginx/access.log main; client_header_timeout 60; client_body_timeout 60; keepalive_timeout 60; gzip off; gzip_comp_level 4; # Include the Elastic Beanstalk generated locations include conf.d/elasticbeanstalk/01_static.conf; include conf.d/elasticbeanstalk/healthd.conf; } }