We are currently using the "standard" architecture created by AWS OpsWorks. We have set up AWS ELB in front of multiple machines, which sends the requests to one machine using round-robin algorithm ( we have stateless application without any cookies ). Apache httpd + Apache tomcat is installed on every machine ( everything set up and configured by AWS OpsWorks ). So Apache httpd handles the connection and then sends it to Tomcat via AJP connection.
I would like to get rid of the apache httpd. Few reasons for that:
- Easier architecture, easier configuration
- Maybe slight gain in performance
- Less monitoring ( need to monitor only Tomcat, but not Apache httpd )
I have checked the following thread: Why use Apache Web Server in front of Glassfish or Tomcat?
and haven't find any reasons why I shouldn't remove apache httpd from my architecture.
However, I know that some applications have nginx in front of the Tomcat for the following reasons:
- Slow clients handling ( ie worker thread of tomcat is freed, but async nginx thread sends clients )
- DDoS SYN ( using SYN cookies ) protection
Questions to consider: Does apache httpd protects from these DDoS techniques? Does AWS ELB protects from these DDoS techniques? Should I remove apache httpd ( given that I don't need anything from the list )? Should I replace it with nginx? Should I replace it with nginx ( taking into account that we have a DDoS protection with Incapsula )?
Any other advice/comment would be highly appreciated! Thank you in advance!