与 Tomcat 的内置代理相比,使用 NGINX 进行反向代理有什么优势吗?

与 Tomcat 的内置代理相比,使用 NGINX 进行反向代理有什么优势吗?

我们有一个在 EC2 实例上的 Tomcat 中运行的应用程序。我们在 EC2 前面有一个 ELB,它配置了以下侦听器:

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 流量时,少数情况下会出现问题。在研究这个问题时,我发现本文

该系统由承包商部分配置,他倾向于使用在 EC2 实例上运行的 nginx 作为反向代理。我的问题是,如果 Tomcat 可以执行相同的功能并通过安全端口重定向非安全流量(如链接文章中所示),那么在我们的用例中,当 nginx 在同一台服务器上运行时,使用 nginx 作为反向代理是否有优势?在这种情况下为什么要使用 nginx?

相关内容