Nginx के साथ प्रॉक्सी / ग्राफ्टाना कैसे करें?


15

मैंने सेटअप किया है और डिफ़ॉल्ट ग्राफ्टाना शुरू कर दिया है और यह http: // localhost: 3000 पर अपेक्षित है । मैं इसे nginx के साथ प्रॉक्सी करने की कोशिश कर रहा हूं जहां मैंने ssl इंस्टॉल किया है। मैं इसे https: // localhost / grafana का जवाब देने की कोशिश कर रहा हूं, लेकिन यह सिर्फ निम्नलिखित कार्य करता है:

{{alert.title}}

मेरे पास मेरे nginx सर्वर ब्लॉक में यह है:

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

जवाबों:


27

ऐसा लगता है कि nginx प्रॉक्सी सर्वर के अनुरोधों को फिर से लिखने का समर्थन करता है इसलिए इस काम को करने के लिए कॉन्फ़िगर को अपडेट करना:

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 rewrite और root_url config दोनों की आवश्यकता है, लेकिन अन्यथा यह ग्राफ्टाना 2.2 के साथ चाल करता है।
महन

2
इसके अलावा, यदि आपके पास grafana को हिट करने से पहले nginx के सामने बुनियादी http है, तो सुनिश्चित करें कि आप अपने प्रॉक्सी स्थान ब्लॉक में Authorizationशामिल करके शीर्षलेख को ओवरराइड कर सकते हैं proxy_set_header Authorization "";, अन्यथा Grafana डेटा स्रोत कनेक्शन के लिए इन क्रेडेंशियल्स का पुन: उपयोग करने पर जोर देगा।
महन

इसे काम करने के लिए पुनर्लेखन नियम आवश्यक है। इसे वास्तव में draf.grafana.org/installation/behind_proxy
dasup

@dasup नहीं, फिर से लिखना नियम की आवश्यकता नहीं है (कम से कम ग्राफ्टाना 4.6 में नहीं)। आपको proxy_passएक यूआरआई शामिल करने के लिए सेट करने की आवश्यकता है /, अन्यथा अनुरोध के रूप में पारित किया गया है ( विवरण के लिए nginx.com/resources/admin-guide/reverse-proxy देखें )। तो विन्यास होना चाहिए proxy_pass http://localhost:3000/;जो कि ग्राफ्टाना डॉक्स स्थिति के समान है।
क्रिसवे

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 पर जाएं जहां मेरे पास इन्फ्लड के साथ-साथ ग्राफ्टाना के लिए प्रॉक्सी सेटअप है।


1
हां, अंतर यहां बताया गया है: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
ध्यान दें कि ट्रेलिंग स्लैश http://localhost:3000/;भी महत्वपूर्ण है।
बिटनिक

और में %(protocol)s://%(domain)s:%(http_port)s/grafana/- सभी स्थानों पर पीछे की ओर स्लैश होना चाहिए।
patricktokeeffe

3

मुझे एक ही समस्या है जब दो अलग-अलग कंटेनरों में डॉकटर पर नेग्नेक्स और ग्राफाना का उपयोग किया गया था। Http://docs.grafana.org/installation/behind_proxy/#nginx-configuration-with-sub-path : निम्नलिखित ग्राफ्टाना-सेवा पर निम्नलिखित विकल्पों को पास करने के लिए, grafana सेवा पर पास किया।

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

लेकिन यह काम नहीं किया, और मेरे ब्राउज़र का कंसोल दिखाता है net::ERR_CONTENT_LENGTH_MISMATCH:।

तो, इसे ठीक करने के लिए, मैंने निम्नलिखित लाइन को अपने nginx config में जोड़ा:

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

0

जानकारी के लिए:

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

कुछ एपीआई कॉल के लिए प्रॉक्सी त्रुटियों का कारण बनता है। मुझे लगता है:

root_url = %(protocol)s://%(domain)s:/grafana
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.