Temos um aplicativo que é executado no Tomcat em uma instância do EC2. Temos um ELB na frente do EC2 que está configurado com os seguintes ouvintes:
ELB
port 80 --> nginx port 80 --> redirect |
port 443 <--> tomcat port 8080 <---
Na instância do EC2, temos o nginx em execução e o proxy reverso para redirecionar as conexões na porta 80 para a porta 8080 (Tomcat). Aqui está a configuração:
http {
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
}
O Tomcat, em execução no mesmo servidor, está configurado para a porta 8080:
<Connector port="8080"
maxThreads="300"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" />
Na maioria das vezes, isso funciona bem, mas isso cria problemas em um pequeno número de casos em que nosso aplicativo retorna tráfego não-HTTPS. Ao pesquisar o problema, encontrei este artigo .
O sistema como está foi configurado parcialmente por um contratante, que favoreceu o uso do nginx em execução na instância do EC2 como proxy reverso. Minha pergunta é, existe uma vantagem em nosso caso de uso de usar o nginx como proxy reverso quando ele está sendo executado no mesmo servidor, se o Tomcat puder executar a mesma função e também redirecionar o tráfego não seguro pela porta segura (como visto no artigo vinculado)? Por que usar o nginx neste caso?
Tags nginx tomcat amazon-elb