• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Grafana 整合 Nginx 網頁伺服器設定教學與範例

本篇介紹如何設定 Grafana 整合 Nginx 網頁伺服器的反向代理(reverse proxy)與 HTTP 基本認證(basic access authentication),透過外部網址登入並存取 Grafana 網頁內容。

相關文章:
Linux 使用 Prometheus 與 Grafana 監控伺服器狀態、發送告警 Email 簡訊教學與範例

Grafana 搭配 Nginx 反向代理設定

這裡我們希望 Grafana 服務可以開在內部的 http://localhost:3000/,然後將 Nginx 對外的 https://my.domain.com/grafana/ 導向至內部的 Grafana。

參考 Grafana 的文件,先修改 /etc/grafana/grafana.ini 設定檔,更改 [server] 中網址相關的設定:

[server]
# 內部 Grafana 使用的 HTTP 連接埠
http_port = 3000

# 公開網址的網域名稱
domain = my.domain.com

# 完整的公開網址(含 Grafana 子路徑)
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/

# 採用 root_url 中的 Grafana 子路徑
serve_from_sub_path = true

修改 Nginx 中網站的設定檔,加入以下 Grafana 所需的反向代理(reverse proxy)設定:

# WebSocket 標頭的頂層 http 設定
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

# 內部 Grafana 位址
upstream grafana {
  server localhost:3000;
}

server {

    # ...

    # Grafana 設定
    location /grafana/ {
        rewrite  ^/grafana/(.*)  /$1 break;
        proxy_set_header Host $http_host;
        proxy_pass http://grafana;
    }

    # Grafana Live WebSocket 連線設定
    location /grafana/api/live/ {
        rewrite  ^/grafana/(.*)  /$1 break;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $http_host;
        proxy_pass http://grafana;
    }
}

更改設定之後,重新啟動 Grafana 與 Nginx 服務:

# 重新啟動 Grafana 服務
sudo systemctl restart grafana-server

# 重新啟動 Nginx 服務
sudo systemctl restart nginx

這時候開啟 https://my.domain.com/grafana/ 這個外部網址,就可以看到 Grafana 的登入畫面了。

AuthProxy 使用者認證

Grafana 有自己的帳號認證系統,若前面的 Nginx 網頁有採用 HTTP 基本認證,就會造成使用者要登入兩次的問題,若希望 Grafana 可以整合 Nginx 伺服器的 HTTP 基本認證,可以依照以下的方式設定。

參考 Grafana 的文件,修改 /etc/grafana/grafana.ini 設定檔,啟用 AuthProxy 功能:

[auth.proxy]
# 啟用 AuthProxy
enabled = true

# 包含使用者名稱(或 Email)的標頭名稱
header_name = X-WEBAUTH-USER

# 標頭內容,可以是 username 或 email
header_property = username

# 自動註冊
auto_sign_up = true

# 快取時間(TTL)
sync_ttl = 60

接著修改 Nginx 網頁設定檔,在 Grafana 的兩個設定區塊中加上 HTTP 基本認證相關的設定:

server{
    location /grafana/ {

        # ...

        # Basic 認證
        auth_basic "Grafana";
        auth_basic_user_file /etc/nginx/htpasswd;

        # Grafana 用標頭
        proxy_set_header X-WEBAUTH-USER $remote_user;

        # 清空 Authorization
        proxy_set_header Authorization "";
    }

    location /grafana/api/live/ {

        # ...

        # Basic 認證
        auth_basic "Grafana";
        auth_basic_user_file /etc/nginx/htpasswd;

        # Grafana 用標頭
        proxy_set_header X-WEBAUTH-USER $remote_user;

        # 清空 Authorization
        proxy_set_header Authorization "";
    }
}

關於 Nginx 伺服器的 HTTP 基本認證與密碼檔案設定,可以參考 G. T. Wang 的教學文章。

Grafana 匿名模式

除了整合 Nginx 的 HTTP 基本認證之外,我們也可以直接採用 Grafana 的匿名模式,停用使用者認證,直接以管理者身份來使用 Grafana,對於管理者個人使用的 Grafana 監控網頁,就可以採用這樣的方式:

[auth.anonymous]
# 啟用匿名模式
enabled = true

# 將匿名使用者視為管理者
org_role = Admin

分類:Linux

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide