Now that we've explored the proxy module in depth, it's time to have a look at what a modern web application architecture might look like. There are entire books dedicated to this topic but we only really need to know how Nginx can enable various setups, and the Nginx part doesn't differ too much between different setups.
For any given task that we need our application to do we have two options, we can either proxy to a backend server like Node.js and have that handle the work, or we can implement it directly in Nginx. Which option you go with depends on a lot of factors, but the two main factors to consider are speed and complexity.
Proxying to a complex backend server has an overhead cost but usually allows you to code reusability and to use package managers such as Packagist and NPM. Conversely, implementing a feature in Nginx puts us closer to the user so we have less overhead but the development itself also becomes more difficult.
Most setups will choose to proxy...