Score:1

ให้สิทธิ์การเข้าถึงอินเทอร์เน็ตสำหรับคำขอบางอย่างจาก Grafana ที่มีพร็อกซีย้อนกลับเท่านั้น

ธง in

ฉันมีสองเครื่อง:

เครื่อง ก: ติดตั้ง Grafana / ไม่สามารถเข้าถึงอินเทอร์เน็ต / ต้องการส่งการแจ้งเตือนไปยัง Telegram

เครื่อง B ติดตั้ง Nginx / เข้าถึงอินเทอร์เน็ต

ฉันต้องการส่งการแจ้งเตือนทางโทรเลขเหล่านั้น แต่เครื่อง A ไม่มีอินเทอร์เน็ต ดังนั้นฉันจึงต้องใช้ B เพื่อดำเนินการดังกล่าว

ฉันสร้างการกำหนดค่านี้ในเครื่อง B (ใน /etc/nginx/sites-available):

เซิร์ฟเวอร์ {

ฟัง 443;

ที่ตั้ง / {

proxy_pass http://mygrafana.example.com;

}

ฉันเห็นว่าเครื่อง A ใช้พอร์ต 443 เพื่อส่งการแจ้งเตือนของ Telegram ดังนั้นฉันจึงใช้พอร์ตนั้นเพื่อฟัง ---> นี่คือบันทึกที่ฉันเห็นพอร์ต 443 lvl=eror msg="ไม่สามารถส่งการแจ้งเตือน" logger=alerting.notifier uid= error="โพสต์ https://api.telegram.org/XXXXXXXXXXXX/sendMessage: กด tcp XX.XX.XX.XX:443: เชื่อมต่อ: เครือข่ายไม่สามารถเข้าถึงได้".

แต่มันใช้งานไม่ได้ ดูเหมือนว่าการกำหนดค่านั้นไม่ทำงาน

ที่นี่ในบันทึกของ grafana ดูเหมือนว่าไม่มีการเชื่อมต่อกับเครื่อง B lvl=eror msg="ไม่สามารถส่งการแจ้งเตือน" เชื่อมต่อ: เครือข่ายไม่สามารถเข้าถึงได้"

djdomi avatar
za flag
ติดตั้ง nginx บน b และย้อนกลับพร็อกซีไปยัง a ในกรณีที่อยู่ในที่/lan เดียวกัน
aldegalan avatar
in flag
@djdomi คุณช่วยยกตัวอย่างง่ายๆ ให้ฉันลองทำแบบเดียวกันได้ไหม และฉันใส่มันเป็นคำตอบ ขอบคุณล่วงหน้า
Score:2
ธง za

ใช้ Nginx เป็น Reverse-Proxy เพื่อเข้าถึง Grafana ได้ทุกที่

กลุ่มดาว:

เซิร์ฟเวอร์ A เป็นเซิร์ฟเวอร์ ปราศจาก อินเทอร์เน็ต (เช่น เซิร์ฟเวอร์เฉพาะ, NAS, ฯลฯ...)
เซิร์ฟเวอร์ B เป็นเซิร์ฟเวอร์ กับ อินเทอร์เน็ต และ การเข้าถึง LAN (การ์ดอีเธอร์เน็ตตัวที่สองเช่น)

ในกรณีนี้ ตัวฉันเองสันนิษฐานว่าเซิร์ฟเวอร์ทั้งสองอยู่บน LAN เดียวกัน หรือได้รับอนุญาตจากเจ้าของหรือกฎไฟร์วอลล์ให้ทำเช่นนั้น :-)

เริ่มที่เซิร์ฟเวอร์ A

เราต้องตรวจสอบจุด

  • ถ้ากราฟาน่าฟังพอร์ตเริ่มต้นที่ 3000
  • ถ้า graphana ฟังเฉพาะ localhost หรือเปิดที่ไหนก็ได้

การดำเนินการบนเซิร์ฟเวอร์ A:

ในกรณีที่ไม่ทราบ เราสามารถใช้

lsof -Pi :3000

สิ่งนี้จะบอกคุณว่ามันฟังเฉพาะ Localhost หรือไม่

Grafana มีเอกสารที่ดี ซึ่งสามารถพบได้ที่นี่ https://grafana.com/docs/grafana/latest/administration/configuration/

ผู้ดูแลระบบ Lazy จากเซิร์ฟเวอร์ A

ข้ามคู่มือไป, ในกรณีที่มันฟัง localhost และไม่ชอบสัมผัสหรือเปลี่ยนกราฟาน่า.
เรายังสามารถใช้ nginx สำหรับขั้นตอนนี้โดยใช้ค่าดีฟอลต์อย่างใดอย่างหนึ่ง เนื่องจากไม่มีอะไรทำงานอยู่ในสมมติฐานของฉัน:


#ต้นฉบับจาก https://grafana.com/tutorials/run-grafana-behind-a-proxy/
แผนที่ $http_upgrade $connection_upgrade {
  อัพเกรดเริ่มต้น;
  '' ปิด;
}

เซิร์ฟเวอร์ {
  #Allow only my LAN's to access this
  อนุญาต 10.0.0.0/8;
  อนุญาต 192.168.0.0/16;
  อนุญาต 172.16.0.0/16;
  #สุดท้ายห้ามเหลือ
  ปฏิเสธทั้งหมด
 
  ชื่อเซิร์ฟเวอร์ _;
  ฟัง 80;
  รูท /usr/share/nginx/html;
  ดัชนี index.html index.htm;

  ที่ตั้ง / {
    proxy_pass http://localhost:3000/;
  }

  # การเชื่อมต่อ Proxy Grafana Live WebSocket
  ตำแหน่ง /api/สด {
    proxy_http_version 1.1;
    proxy_set_header อัพเกรด $http_upgrade;
    proxy_set_header การเชื่อมต่อ "อัพเกรด";
    proxy_set_header โฮสต์ $http_host;
    proxy_pass http://localhost:3000/;
  }
}

config ข้างต้นคืออะไร?

ฉันต้องการหลีกเลี่ยงการสัมผัส Grafana และใช้ NGINX เพื่อจัดการสิ่งนั้น ยิ่งกว่านั้น ตอนนี้ฉันสามารถเข้าถึงได้ด้วย IP จาก LAN ไปยังอินสแตนซ์นี้

  • เซิร์ฟเวอร์ A -- เสร็จสิ้น

เริ่มต้นใหม่ไปยังเซิร์ฟเวอร์ B

อันที่ง่าย!

ติดตั้ง nginx ด้วยตัวจัดการแพ็คเกจของคุณ

apt-get ติดตั้ง nginx ฉลาดติดตั้ง nginx

ฯลฯ. ขึ้นอยู่กับการจำหน่ายของท่าน.

กำหนดค่าสำหรับ NGINX

เซิร์ฟเวอร์ {
# https เปลี่ยนเส้นทาง
        server_name grafana.mydoma.in;
        ฟัง 80;
        ส่งคืน 301 https://$host$request_uri;


}

เซิร์ฟเวอร์ {
        proxy_read_timeout 3600;
# *ถ้าคุณต้องการ http ธรรมดา ยกเลิกการแสดงความคิดเห็นพอร์ต 80*
# *เตือนว่าคุณจะแสดงความคิดเห็นด้านบนมิฉะนั้นจะไม่ทำงาน *
        #ฟัง80;
        ฟัง 443 ssl http2;
        server_name grafana.mydoma.in;
        
                ที่ตั้ง / {
                        proxy_pass http://10.0.0.1:3000;
                        proxy_set_header โฮสต์ $http_host;
                        
}
    ssl_certificate /etc/letsencrypt/live/grafana.mydoma.in/fullchain.pem; # จัดการโดย Certbot
    ssl_certificate_key /etc/letsencrypt/live/grafana.mydoma.in/privkey.pem; # จัดการโดย Certbot

}

ฉันคิดว่าในที่นี้คุณใช้ lets encrypt เป็นผู้ให้บริการ SSL

10.0.0.1 เป็น IP ของเซิร์ฟเวอร์ A เนื่องจากมันฟังพอร์ต 80 ด้วยชื่อ (_) ที่ไม่ถูกต้อง มันจะใช้สิ่งนี้เสมอ หากคุณลบการกำหนดค่าเริ่มต้นอื่น ๆ แน่นอน :-)

ตอนจบ // บทสรุป

คุณสามารถเข้าถึง grafana จากทุกที่เมื่อทุกอย่างทำงานได้ดี เตือนสั้น:

  • คุณ จะไม่ ต้องการ NGINX บนเซิร์ฟเวอร์ A เมื่อฟัง LAN หรืออุปกรณ์ทั้งหมด.
    • ในกรณีนี้ คุณสามารถ ข้าม การติดตั้ง NGINX บนเซิร์ฟเวอร์ A
    • และตรงไปยังส่วนที่สอง

มีความสุข ;-)

อัปเดต:

  • OP อ้างว่าการกำหนดค่าจะล้มเหลว ไม่ ทำงานได้ดี
root@nginx-verify:/etc/nginx/sites-enabled# nginx -t
nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์ใช้ได้
nginx: การทดสอบไฟล์การกำหนดค่า /etc/nginx/nginx.conf สำเร็จ

การกำหนดค่าทั้งหมดใช้งานได้ ไม่ทราบว่าคุณคัดลอกอะไรมา

aldegalan avatar
in flag
สวัสดี @djdomi ดูเหมือนว่าการกำหนดค่ามีข้อผิดพลาดทางไวยากรณ์หรือบางอย่าง (เซิร์ฟเวอร์ B หนึ่ง)
djdomi avatar
za flag
nginx -t บอกคุณว่าฉันพลาดอะไรไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา