While Odoo itself can serve web pages, it is strongly recommended to have a reverse proxy in front of it. A reverse proxy acts as an intermediary managing the traffic between the clients sending requests and the Odoo servers responding to them. Using a reverse proxy has several benefits.
On the security side, it can do the following:
Handle (and enforce) HTTPS protocols to encrypt traffic
Hide the internal network characteristics
Act an "application firewall" limiting the URLs accepted for processing
And on the performance side, it can provide significant improvements:
Cache static content, thus reducing the load on the Odoo servers
Compress content to speed up loading times
Act as a load balancer distributing load between several servers
Apache is a popular option to use as reverse proxy. Nginx is a recent alternative with good technical arguments. Here we will choose to use nginx as a reverse proxy and show how it can be used perform the functions mentioned above.