/ grafanaをnginxでプロキシする方法は?


15

デフォルトのgrafanaをセットアップして起動しましたが、http:// localhost:3000で期待どおりに動作します。私はsslをインストールしているnginxでプロキシしようとしています。私はそれがhttps:// localhost / grafanaに応答するようにしようとしていますが、それは単に次のものを提供しています:

{{alert.title}}

私はnginxサーバーブロックにこれを持っています:

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

回答:


26

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の書き換えとroot_url構成の両方が必要ですが、それ以外の場合はGrafana 2.2でトリックを行うことに注意してください。
マーン

2
また、nganaxがgrafanaに到達する前にnginxの前に基本的なhttp認証がある場合、プロキシロケーションブロックにAuthorization含めることproxy_set_header Authorization "";でヘッダーをオーバーライドしてください。
マーン

書き換えルールは、動作させるために不可欠です。これは本当にdocs.grafana.org/installation/behind_proxyのGrafanaドキュメントに追加する必要があります-dasup 18
1

@dasupいいえ、書き換えルールは必要ありません(少なくともgrafana 4.6では)。proxy_passなどのURIを含めるように設定する必要があります/。そうしないと、リクエストはそのまま渡されます(説明については、nginx.com / resources / admin-guide / reverse-proxyも参照してください)。そのためproxy_pass http://localhost:3000/;、grafana docsに記載されているとおりの構成にする必要があります。
-ChrisWue

10

@ AXE-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にアクセスしてください。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

2つの異なるコンテナで、Dockerでnginxとgrafanaを使用すると、同じ問題が発生しました。http://docs.grafana.org/installation/behind_proxy/#nginx-configuration-with-sub-pathに従って、grafanaサービスのdocker-composeに次のオプションを渡しました。

- 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

ご参考までに:

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.