Apacheを使ってGrafanaにリバースプロキシでアクセスできるようにしようとしてちょっと手こずりました。nginxでのやり方は情報が多かったのですがApacheはあまり見かけなかったので書き残しておきます。
前提
example.com/grafana/
にHTTPSでアクセスするとGrafanaへログインできるようにしていきます。
Grafanaの設定
grafana.ini
の該当する行を見つけてコメントアウトを解除し書き換えてください。
serve_from_sub_path
をtrue
にするという情報も見かけましたが、私の環境だとTOO_MANY_REDIRECTS
が出てしまいました。(Grafana 10以降とApache 2.4.xだとリダイレクトループするという記述を見つけました。)
grafana.ini
root_uri = %(protocol)s://%(domain)s/grafana/
Apacheの設定
設定ファイルの名前はあくまで一例です。Grafanaが利用するポートはデフォルトだと3000番です。
my-proxy.conf
<VirtualHost *:80>
ProxyPass /grafana/ http://localhost:3000/
ProxyPassReverse /grafana/ http://localhost:3000/
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
my-proxy-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
RewriteEngine on
RewriteCond %{REQUEST_URI} /grafana$
RewriteRule /* %{REQUEST_URI}/ [R=301,L]
ProxyPreserveHost On
ProxyPass /grafana/ http://localhost:3000/
ProxyPassReverse /grafana/ http://localhost:3000/
</VirtualHost>
</IfModule>
ただリバースプロキシを設定しただけだとGrafanaを操作するときにOrigin not allowed
と出て操作できません。
ProxyPreserveHost
をOn
にするとよいという記述を見つけたのでそうしてみたら直りました。