วิธีการ proxy / grafana กับ nginx


15

ฉันได้ติดตั้งและ grafana เริ่มต้นเริ่มต้นและทำงานได้ตามที่คาดไว้http: // localhost: 3000 ฉันพยายามที่จะ proxy มันด้วย nginx ที่ฉันติดตั้ง ssl ฉันพยายามที่จะให้มันตอบสนองต่อhttps: // localhost / grafanaแต่มันทำหน้าที่ดังต่อไปนี้:

{{alert.title}}

ฉันมีสิ่งนี้ในบล็อกเซิร์ฟเวอร์ nginx ของฉัน:

location /grafana {
     proxy_pass         http://localhost:3000;
     proxy_set_header   Host $host;
}

คำตอบ:


27

ดูเหมือนว่า nginx รองรับการเขียนคำขอไปยังเซิร์ฟเวอร์ proxied อีกครั้งดังนั้นการอัปเดตการกำหนดค่านี้ทำให้ทำงาน:

location /grafana {
     proxy_pass         http://localhost:3000;
     rewrite  ^/grafana/(.*)  /$1 break;
     proxy_set_header   Host $host;
}

grafana.ini ของฉันมีรูตที่อัพเดทแล้ว:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

ฉันสามารถยืนยันได้ว่าสิ่งนี้ได้ผล โปรดทราบว่าเนื่องจากสินทรัพย์แบบคงที่จำเป็นต้องใช้ทั้งการเขียนแบบ nginx และการกำหนดค่า root_url แต่ไม่เช่นนั้นจะทำการหลอกลวงด้วย Grafana 2.2
มาห์น

2
นอกจากนี้หากคุณมี http auth พื้นฐานหน้า nginx ก่อนที่จะพบ grafana ตรวจสอบให้แน่ใจว่าคุณได้ลบล้างAuthorizationส่วนหัวโดยรวมproxy_set_header Authorization "";ไว้ในบล็อกตำแหน่งพร็อกซีมิฉะนั้น Grafana จะยืนยันในการนำข้อมูลประจำตัวเหล่านี้กลับมาใช้ใหม่สำหรับการเชื่อมต่อแหล่งข้อมูล
มาห์น

กฎการเขียนซ้ำเป็นสิ่งจำเป็นเพื่อให้ทำงานได้ ควรเพิ่มสิ่งนี้ลงในเอกสารGrafana
dasup

@dasup ไม่กฎการเขียนซ้ำไม่จำเป็น (อย่างน้อยไม่ได้อยู่ใน grafana 4.6) คุณต้องตั้งค่าproxy_passให้รวม URI เช่น/มิฉะนั้นคำขอจะถูกส่งผ่านตามที่เป็นอยู่ (ดูที่nginx.com/resources/admin-guide/reverse-proxyสำหรับคำอธิบาย) ดังนั้นการกำหนดค่าควรจะproxy_pass http://localhost:3000/;เป็นสิ่งที่รัฐเอกสาร grafana
ChrisWue

10

เมื่อเพิ่มไปยังคำตอบ @ AX-Labs คุณไม่จำเป็นต้องเขียน URL ใหม่

nginx.conf

location /grafana/ {
     proxy_pass         http://localhost:3000/;
     proxy_set_header   Host $host;
}

grafana.ini update root:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/

สังเกตเพิ่มเติม / ในบล็อกตำแหน่งซึ่งสร้างความแตกต่างทั้งหมด

หากคุณต้องการดูไฟล์ทั้งหมดโปรดไปที่https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6ซึ่งฉันได้ตั้งค่าพร็อกซี rever สำหรับ Infludb และ grafana


1
ใช่อธิบายความแตกต่างได้ที่นี่: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
โปรดทราบว่าเครื่องหมายสแลชต่อท้ายhttp://localhost:3000/;มีความสำคัญเช่นกัน
bitnik

และใน%(protocol)s://%(domain)s:%(http_port)s/grafana/- ทุกตำแหน่งควรมีเครื่องหมายทับ
patricktokeeffe

3

ฉันได้รับปัญหาเดียวกันเมื่อใช้ nginx และ grafana บน docker ในสองคอนเทนเนอร์ที่ต่างกัน ส่งผ่านตัวเลือกต่อไปนี้เพื่อจัดเรียงข้อมูลบนบริการ grafana ตามhttp://docs.grafana.org/installation/behind_proxy/#nginx-configuration-with-sub-path :

- GF_SERVER_DOMAIN=foo.bar.com
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:/grafana

net::ERR_CONTENT_LENGTH_MISMATCHแต่มันไม่ได้ทำงานและเบราว์เซอร์ของฉันแสดงคอนโซล:

ดังนั้นเพื่อแก้ไขฉันเพิ่มบรรทัดต่อไปนี้เพื่อกำหนดค่า nginx ของฉัน:

location /grafana/ {
  proxy_pass http://monitoring_grafana:3000/;
  proxy_max_temp_file_size 0; # THIS MADE THE TRICK!
}

0

FYI:

root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

ทำให้เกิดข้อผิดพลาดพร็อกซีสำหรับการเรียก API บางอย่าง ฉันหา:

root_url = %(protocol)s://%(domain)s:/grafana
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.