У нас есть приложение, которое работает в Tomcat на экземпляре EC2. У нас есть ELB перед EC2, который настроен со следующими слушателями:
ELB
port 80 --> nginx port 80 --> redirect |
port 443 <--> tomcat port 8080 <---
На экземпляре EC2 у нас запущен nginx, который выполняет обратный прокси-сервер для перенаправления соединений с порта 80 на порт 8080 (Tomcat). Вот конфиг:
http {
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
}
Tomcat, работающий на том же сервере, настроен для порта 8080:
<Connector port="8080"
maxThreads="300"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" />
В большинстве случаев это работает нормально, но в небольшом количестве случаев это создает проблемы, когда наше приложение возвращает не-HTTPS-трафик. Исследуя проблему, я обнаружил Эта статья.
Система в том виде, в каком она была настроена, частично была настроена подрядчиком, который предпочел использовать nginx, работающий на экземпляре EC2, в качестве обратного прокси. Мой вопрос: есть ли преимущество в нашем случае использования nginx в качестве обратного прокси, когда он работает на том же сервере, если Tomcat может выполнять ту же функцию, а также перенаправлять небезопасный трафик через безопасный порт (как показано в связанной статье)? Зачем вообще использовать nginx в этом случае?