nginx proxy

#279

V současné době neexistuje automatická konfigurace nginx proxy pro přístup k netdata na jednotlivých serverech. Nastavení je potřeba udělat ručně.

nxing cfg: some-site.conf

V úvodní části konfiguračního souboru jsou nadefinovány jednotlivé servery, na kterých běží netdata.

upstream backend-some-site-srv1-jfhrtgf {
    server 10.12.6.10:19999;
    keepalive 64;
}

Za upstream backend- může být v podstatě libovolný text, který je následně obsahem URL pro přístup k netdata. Výsledné URL bude v tomto případě https://some-site-lm.shipard.pro/netdata/some-site-srv1-jfhrtgf. Toto URL se poté vkládá do definice zdrojů dat pro monitoring. Pokud URL zadáme do prohlížeče, měli bychom vidět netdata rozhraní.

Část server už je klasické nastavení serveru a není potřeba v něm kromě názvu serveru nic upravovat. Vlastní definice proxy je „naskriptovaná“ a při přidání dalšího serveru v úvodní části není potřeba nic řešit.

upstream backend-some-site-lm1-hgiwpvnfhe {
    server 127.0.0.1:19999;
    keepalive 64;
}

upstream backend-some-site-srv1-jfhrtgf {
    server 10.12.6.10:19999;
    keepalive 64;
}

upstream backend-some.site-srv2-mvhjfzrjsj {
    server 10.12.6.11:19999;
    keepalive 64;
}

server {
    listen 443 ssl http2;
    server_name some-site-lm.shipard.pro;
    root /var/lib/shipard-node/www;
    index index.html index.php;

    ssl_certificate /etc/ssl/crt/shipard.pro/fullchain.pem;
    ssl_certificate_key /etc/ssl/crt/shipard.pro/privkey.pem;

    ssl_dhparam /etc/ssl/crt/dhparam.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
    include /usr/lib/shipard-node/etc/nginx/shn-https.conf;

    location ~ /netdata/(?<behost>.*)/(?<ndpath>.*) {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
        proxy_pass http://backend-$behost/$ndpath$is_args$args;

        gzip on;
        gzip_proxied any;
        gzip_types *;
    }

    location ~ /netdata/(?<behost>.*) {
        return 301 /netdata/$behost/;
    }
}