Using Nginx with Aptible Endpoints

Nginx is a popular choice for a reverse proxy to route requests through to Aptible Endpoints using a proxy_pass directive.

However, one major pitfall of using Nginx with Aptible Endpoints is that, by default, Nginx disregards DNS TTLs and caches the IPs of its upstream servers forever, whereas the IPs for Aptible Endpoints change periodically (under the hood, Aptible use AWS ELBs, from which their inherit this property)

This means that Nginx will, by default, eventually use the wrong IPs when pointed at an Aptible Endpoint through a proxy_pass directive.

To work around this problem, you should avoid the following configuration pattern in your Nginx configuration:

location / {
    proxy_pass https://hostname-of-an-endpoint;

Instead, use this:

set $upstream_endpoint https://hostname-of-an-endpoint;

location / {
    proxy_pass $upstream_endpoint;