I have application with docker images of all. I have setup Isolated Servers for my application.
Web Server => Application Server => Database Server
Web Server is configured with Nginx with SSL configuration in place. Application and Database Server is not directly exposed to outside world, Web Server will access Application Server and Application Server will Database Server.
Other than Web Server every communication is on HTTP, but these servers (App Server & Database Server) can not be directly accessed.
How to make Web Server => Application Server => Database Server this communication securely?
NOTE: On Application Server & Database Server Docker Containers are running for my Application.
Short Answer
There is no silver bullet, be it approach or product, when it comes to security.
Long Answer
As mentioned by others this is a question that can be approached from multiple angles. A proper approach will look at the stack from end-to-end and reduce attack vectors accordingly. Some examples include, but are not limited to: