私はnginxリバースプロキシでKibana4をセットアップしようとしていますが、これまでのところ部分的な成功を収めています。 Kibanaに関連する私の構成は次のとおりです。
server {
listen 82;
server_name ${HOSTNAME};
set $kibana kibana.docker;
location /kibana4/ {
proxy_pass http://$kibana:5601;
proxy_set_header Host $Host;
proxy_set_header Referer "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 16 64k;
proxy_busy_buffers_size 64k;
client_max_body_size 256k;
client_body_buffer_size 128k;
}
}
その場合、http://localhost:82/kibana4/
にアクセスすると、Not Found 404が表示されます
ただし、location /kibana4/
をlocation /
に置き換えると、すべてが正常に機能します。もちろん、その場合、URLはhttp://localhost:82
に変更されます。
同様の問題に関連する他のトピックがいくつか見つかりました。例:
ウェブディレクトリのnginxリバースプロキシの背後でsinatraプログラム[Kibana]を実行
しかし、そこに記載されている解決策は私にはうまくいきません。私もこの設定を試しました:
server {
listen 82;
server_name ${HOSTNAME};
set $kibana kibana.docker;
location /kibana4 {
proxy_pass http://$kibana:5601/;
proxy_set_header Host $Host;
proxy_set_header Referer "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 16 64k;
proxy_busy_buffers_size 64k;
client_max_body_size 256k;
client_body_buffer_size 128k;
}
}
kibana.docker
ホストへのプロキシを開始しますが、問題はすべてのURLが同じkibanaロードページに書き換えられることです。これにより、CSSまたはJavaScriptファイルを適切にロードできなくなります。
私の質問は:誰かがここで何が悪いのか知っていますか?サーバーのルート以外の場所からKibana4を正常に実行できる人はいますか?よろしくお願いします。
HDありがとうございます。私の以前の投稿の下のあなたの質問のために-それは非常に啓発的でした。それは私が何が問題だったかを理解するのに役立ちました。場所の部分もプロキシに渡されることをいつも忘れています。そのため、私の場合は場所を書き換える必要があります。正しい構成は次のようになります。
location ~ ^/kibana4/(.*)$ {
rewrite /kibana4/(.*) /$1 break;
proxy_pass http://$kibana:5601;
proxy_set_header Host $Host;
proxy_set_header Referer "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 16 64k;
proxy_busy_buffers_size 64k;
client_max_body_size 256k;
client_body_buffer_size 128k;
}
また、rewrite
の部分がない場合にlocation /
設定が正しく機能する理由についても説明します。 rewrite
を追加すると、残りの部分のみがプロキシに渡され、チャームのように機能します。
もう一度ありがとう、学んだ教訓:-)
パーティーには遅れましたが、Apacheが見つからないため、満足できる解決策をここに残したいと思いました。私のサブディレクトリからのプロキシを機能させたのは、ProxyPassディレクトリの後に末尾のスラッシュを追加することでした。
ProxyPass /kibana/ http://localhost:5601/
ProxyPassReverse /kibana/ http://localhost:5601/
こちらをご覧ください:
Kibana 6.3以降、設定は kibana.yml で利用可能になりました
server.Host: "example.com"
server.basePath: "/tools/kibana"
server.rewriteBasePath: true
これは http://example.com/tools/kibana でアプリを提供し、Kibana UIのすべてのリンクを含みます