Nginx Reverse Proxy mit dynamischem Zielhost

F├╝r meine Statusseite https://status.trashserver.net setze ich aus verschiedenen Gr├╝nden einen eigenen Reverse Proxy ein, um auf der ├ťbersichtsseite von Uptimerobot.com HTTPS TLS-Verschl├╝sselung anbieten zu k├Ânnen. Nach der Einrichtung meines Nginx Webproxies war die Statusseite jedoch regelm├Ą├čig nicht mehr erreichbar (“502 - Bad Gateway”). Erst nach einem Neustart von Nginx konnte die Seite wieder aufgerufen werden. Die Ursache f├╝r die regelm├Ą├čigen Unterbrechungen war eine dynamische IP-Adresse hinter dem Zielhost “stats.uptimerobot.com”. Mit folgender, klassischer Konfiguration wird der Zielhost nur ein Mal beim Start von Nginx aufgel├Âst:

server {
    server_name status.trashserver.net;

    [...]

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass https://stats.uptimerobot.com;
        proxy_redirect off;
    }

    [...]
}

Wenn die zum Start ermittelte IP-Adresse sich ├Ąndert und nicht mehr auf den erwarteten Host zeigt, kommt es zum beschriebenen Fehler. Ich habe also nach einer M├Âglichkeit gesucht, Nginx dazu zu zwingen, den Hostnamen regelm├Ą├čig neu aufzul├Âsen. Bei tenzer.dk bin ich f├╝ndig geworden: Setzt man den Upstream in Form einer Variablen, und gibt einen Resolver an, verh├Ąlt sich Nginx wie gew├╝nscht und kommt auch mit dynamischen IP-Adressen zurecht:

server {
    server_name status.trashserver.net;

    [...]

    resolver 192.168.2.1;
    set $upstream1 https://stats.uptimerobot.com/rk3R0IDJq/;
    set $upstream2 https://stats.uptimerobot.com;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass $upstream1;
        proxy_redirect off;
    }

    location ~ ^/(.+) {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass $upstream2;
        proxy_redirect off;
    }
}