Folosind Nginx ca Reverse-Proxy pentru a accesa Grafana peste tot
Constelația:
Serverul A este un server fără Internet (adică un server dedicat, NAS etc...)
serverul B este un server cu Internet ȘI acces la LAN (a doua placă Ethernet, adică)
În acest caz, presupun că Ambele servere se află pe aceeași rețea LAN sau sunt permise de către Proprietar sau Regulile Firewall să facă asta :-)
Începeți pe serverul A
Trebuie să verificăm punctul,
- dacă graphana ascultă portul implicit pe 3000
- dacă graphana ascultă doar localhost sau deschis oriunde
Acțiuni pe serverul A:
În cazul în care este necunoscut, putem folosi
lsof -Pi :3000
Acest lucru vă va spune dacă ascultați doar Localhost sau nu.
Grafana are o Documentație frumoasă, care poate fi găsită aici
https://grafana.com/docs/grafana/latest/administration/configuration/
Administratorul Leneș de la Server A
omite manualul, în caz că îl ascultă localhost și nu-i place să atingă sau să schimbe grafana.
Putem folosi, de asemenea, nginx pentru acest pas, folosind fie valoarea implicită, deoarece nimic altceva nu rulează în ipoteza mea:
#Original de pe https://grafana.com/tutorials/run-grafana-behind-a-proxy/
harta $http_upgrade $connection_upgrade {
upgrade implicit;
'' închide;
}
Server {
#Permiteți accesul la aceasta numai rețelelor mele LAN
permite 10.0.0.0/8;
permite 192.168.0.0/16;
permite 172.16.0.0/16;
#În sfârșit, interziceți restul
nega totul;
numele serverului _;
asculta 80;
root /usr/share/nginx/html;
index index.html index.htm;
Locație / {
proxy_pass http://localhost:3000/;
}
# Conexiuni Proxy Grafana Live WebSocket.
locație /api/live {
proxy_http_versiunea 1.1;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune „Actualizare”;
proxy_set_header Gazdă $http_host;
proxy_pass http://localhost:3000/;
}
}
Ce înseamnă configurația de mai sus?
Vreau să evit să ating Grafana și să folosesc NGINX pentru a face față. Mai mult, acum pot accesa prin IP din LAN la această instanță.
Pornire pe serverul B
Cel ușor!
Instalați nginx cu managerul de pachete
apt-get install nginx
apt install nginx
Etc.. În funcție de distribuția dvs.
Configurare pentru NGINX
Server {
# https redirecționare
nume_server grafana.mydoma.in;
asculta 80;
returnează 301 https://$host$request_uri;
}
Server {
proxy_read_timeout 3600;
# *dacă aveți nevoie de http simplu, decomentați portul 80*
# *amintiți-vă că veți comenta cele de mai sus, altfel nu va funcționa*
#ascultă 80;
asculta 443 ssl http2;
nume_server grafana.mydoma.in;
Locație / {
proxy_pass http://10.0.0.1:3000;
proxy_set_header Gazdă $http_host;
}
ssl_certificate /etc/letsencrypt/live/grafana.mydoma.in/fullchain.pem; # gestionat de Certbot
ssl_certificate_key /etc/letsencrypt/live/grafana.mydoma.in/privkey.pem; # gestionat de Certbot
}
Presupun că aici utilizați les encrypt ca furnizor SSL.
10.0.0.1 este IP-ul serverului A, deoarece ascultă portul 80 cu un nume nevalid (_), îl va folosi întotdeauna, dacă ați eliminat orice altă configurație implicită, desigur :-)
sfârşitul // Concluzii
Puteți, când totul funcționează bine, să accesați grafana de oriunde.
Memento scurt:
- Tu VASĂ nevoie de NGINX pe serverul A când ascultă LAN sau TOATE dispozitivele.
-
- În acest caz, puteți Ocolire instalarea NGINX pe serverul A
-
- Și mergi direct la a doua parte.
A se distra ;-)
Actualizați:
- OP susține că configurația ar eșua.
Nu, funcționează bine.
root@nginx-verify:/etc/nginx/sites-enabled# nginx -t
nginx: sintaxa fișierului de configurare /etc/nginx/nginx.conf este ok
nginx: fișierul de configurare /etc/nginx/nginx.conf testul a reușit
configurația completă funcționează. Nu stiu ce ai copiat.