Configurar o proxy reverso - AWS Elastic Beanstalk

Configurar o proxy reverso

O Elastic Beanstalk usa nginx como o proxy reverso para mapear o aplicativo para o load balancer do Elastic Load Balancing na porta 80. O Elastic Beanstalk fornece uma configuração de nginx padrão que pode ser estendida ou substituída completamente por sua própria configuração.

Por padrão, o Elastic Beanstalk configura o proxy nginx para encaminhar solicitações ao seu aplicativo na porta 5000. Você pode substituir a porta padrão definindo a propriedade do ambiente PORT para a porta de escuta do seu aplicativo principal.

nota

A porta que seu aplicativo escuta não afeta a porta na qual o servidor nginx escuta para receber solicitações do load balancer.

Todas as plataformas do Amazon Linux 2 oferecem suporte a um recurso de configuração de proxy uniforme. Para obter detalhes sobre como configurar o servidor de proxy nas novas versões da plataforma do Amazon Corretto que executam o Amazon Linux 2, expanda a seção Reverse Proxy Configuration (Configuração de proxy reverso) em Estender plataformas Linux do Elastic Beanstalk.

Configurar o proxy na AMI do Amazon Linux (anterior ao Amazon Linux 2)

Se o ambiente Java SE do Elastic Beanstalk usar uma versão da plataforma de AMI do Amazon Linux (anterior ao Amazon Linux 2), leia as informações adicionais nesta seção.

Para estender a configuração do nginx padrão do Elastic Beanstalk, adicione arquivos de configuração .conf a uma pasta denominada .ebextensions/nginx/conf.d/ no pacote de origem do seu aplicativo. A configuração nginx do Elastic Beanstalk inclui os arquivos .conf nessa pasta automaticamente.

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

Para substituir completamente a configuração nginx padrão do Elastic Beanstalk, inclua uma configuração em seu pacote de origem em .ebextensions/nginx/nginx.conf:

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

Se você substituir a configuração nginx do Elastic Beanstalk, adicione a seguinte linha a nginx.conf para extrair as configurações do Elastic Beanstalk para Monitoramento e relatório de integridade aprimorada, mapeamentos de aplicativos automáticos e arquivos estáticos.

include conf.d/elasticbeanstalk/*.conf;

A seguir, o exemplo de configuração do aplicativo de exemplo Scorekeep substitui a configuração padrão do Elastic Beanstalk para atender um aplicativo web estático do subdiretório public de /var/app/current, onde a Plataforma Java SE copia o código-fonte do aplicativo. O local /api encaminha o tráfego para rotas sob /api/ para o aplicativo Spring que escuta na porta 5000. O restante do tráfego é atendido pelo aplicativo web no caminho raiz.

exemplo .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; } }