Using Nginx for deploying and securing applications in the cloud

1- What is Nginx?

Nginx is a:

  • Web server: A web server is server software, or a system of one or more computers dedicated to running this software, that can satisfy client HTTP requests on the public World Wide Web or also on private LANs and WANs. [source]
  • Reverse proxy: A reverse proxy server is a type of proxy server that typically sits behind the firewall in a private network and directs client requests to the appropriate backend server.[source]
  • Load balancer: A load balancer is a device that acts as a reverse proxy and distributes network or application traffic across a number of servers. Load balancers are used to increase capacity (concurrent users) and reliability of applications. [source]
  • Mail proxy: A mail proxy server is a stand-alone machine that is located in front of the actual email server. The mail proxy server is customized to provide any or all of the following services: Web based email via IMAP. Virus scanning. File type blocking. [source]
  • HTTP cache: Caching is a technique that stores a copy of a given resource and serves it back when requested. [source]

2- My use cases for Nginx

  • Nginx as a reverse proxy and load balancer for applications that I’m deploying in cloud platforms (AWS, GCP, Azure, Heroku)
  • Using Nginx authentication modules to create an authentication layer that can be used with applications that I’m deploying in cloud platforms.

3- Installing Nginx and basic commands

4- Nginx basic configuration

5- Nginx basic authentication

6- Nginx advanced authentication with Python