Назад | Перейти на главную страницу

Есть ли преимущество в использовании NGINX для обратного прокси по сравнению со встроенным проксированием Tomcat?

У нас есть приложение, которое работает в 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 в этом случае?