
Eu adoraria saber se isso é realmente possível, mas tenho certeza de que já vi isso demonstrado por um de nossos antigos TAMs da AWS.
Estou servindo contêineres PHP-FPM (porta 9000) fora do ECS que hospeda um aplicativo PHP. Estou pensando em substituir as caixas nginx por apenas um ALB.
Essencialmente, as solicitações pela porta 80 para o ALB devem executar o ponto de entrada da aplicação na porta 9000 com os dados da solicitação original.
Tentei mexer nos grupos-alvo, mas não consigo descobrir como executar a mesma funcionalidade do ProxyPass que o nginx oferece.
Isso é possível? E, se sim, como?
Responder1
Eu adoraria saber se isso é realmente possível, mas tenho certeza de que já vi isso demonstrado por um de nossos antigos TAMs da AWS.
Estou ansioso por esta solução.
Pelo que entendi, cheguei à conclusão de que PHP-FPM por trás do NGINX é a solução mais fácil. Razões:
- FastCGIé um protocolo binário para interface de programas interativos com um servidor web. Portanto, a porta 9000 exposta pelo PHP-FPM não é adequada diretamente atrás de um AWS ELB.
- Servidor web integrado do PHPnão deve ser usado em ambientes de produção.
- É uma má prática permitir que o mesmo servidor seja o servidor web e o servidor de aplicativos. Os recursos do servidor de aplicativos serão sobrecarregados pelo servidor web e vice-versa. Cada servidor tem seus benefícios. Usamos NGINX desde que foi testado em batalha como servidor web. Usamos PHP-FPM como sua implementação principal do PHP FastCGI.Não deveríamos usar uma AK-47 para matar um rato, deveríamos empregar uma ratoeira.
- Os aplicativos Django + Gunicorn atrás de um AWS ELB funcionam perfeitamente até que um cliente lento comece a enviar solicitações. O NGINX facilita o tratamento de clientes lentos, pois armazena em buffer e encaminha solicitações completas (todos os pacotes TCP) para o Gunicorn. Referência:Implantação Gunicórnio. Isso também se aplica ao PHP-FPM.
- O NGINX ajuda a fornecer arquivos estáticos com facilidade e os compacta usando GZIP. Dito isto, os arquivos estáticos devem ser servidos usando um armazenamento de objetos como o S3.