A reverse proxy is often used as a standard approach to protect services from an untrusted network. It provides a single point of entry, which usually constraints any communication to HTTP(s) only. A reverse proxy component often doubles up as a load balancer or static content provider. In the past, I’ve developed these capabilities using bespoke code but more recently I’ve turned to open source code or commodity tools to reduce costs and speed up delivery. NGINX provides a good way to deliver these capabilities and is probably the defacto product for most people.
In a microservices world, we need our toolbox to be bit more sophisticated. API Gateways, dynamic service discovery, and health checks all play an important role in running a successful microservices architecture. These can be written from scratch but you may find the cost and time taken to achieve a viable product is counterproductive.
Fortunately, the team at NGINX have created the tools to accomplish these tasks and provide a handy architecture reference model to explain how. If you are unfamiliar with NGINX or their commercial product, NGINX Plus, then I recommend reading Chris Stetson’s Microservices Reference Architecture document to check if it suits your needs before embarking a long development cycle.