Puncte:1

Acordați acces la Internet numai pentru anumite solicitări de la Grafana cu proxy invers

drapel in

Am doua masini:

Mașina A: Grafana instalat / Fără acces la Internet / Trebuie să trimiteți notificări către Telegram

Mașina B Nginx instalat / Acces la Internet

Aș dori să trimit acele notificări Telegram, dar aparatul A nu are internet, așa că trebuie să folosesc B pentru a face asta.

Am creat această configurație în mașina B (în /etc/nginx/sites-available):

Server {

asculta 443;

Locație / {

proxy_pass http://mygrafana.example.com;

}

Am văzut că Mașina A folosește portul 443 pentru a trimite notificări Telegram, așa că am folosit acel port pentru ascultare ---> Iată jurnalele în care am văzut portul 443 lvl=eror msg="Nu s-a trimis notificarea" logger=alerting.notifier uid= error="Postează https://api.telegram.org/XXXXXXXXXXXX/sendMessage: formați tcp XX.XX.XX.XX:443: conectați: Rețeaua nu este accesibilă".

Dar nu funcționează, se pare că acea configurație nu funcționează.

Aici, în jurnalele grafana se pare că nu există nicio conexiune la mașina B lvl=eror msg="eșuat la trimiterea notificării" conectare: rețeaua este inaccesibilă"

djdomi avatar
drapel za
instalați nginx pe b și inversați-l pe a, în cazul în care este în același loc/lan
aldegalan avatar
drapel in
@djdomi Ați putea vă rog să-mi dați un exemplu ușor pentru a încerca să fac același lucru? Și l-am pus ca răspuns, mulțumesc anticipat
Puncte:2
drapel za

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ță.

  • Server A -- TERMINAT.

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.

aldegalan avatar
drapel in
Bună ziua @djdomi pare că configurația are o eroare de sintaxă sau ceva (cel Server B)
djdomi avatar
drapel za
nginx -t vă spune ce am ratat

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.