渡されたURIに応じて2つの異なるKibanaホストにリダイレクトするリバースプロキシとして機能するようにnginxを構成したいと思います。 /
は標準にリダイレクトし、/october/
は10月専用のKibanaにリダイレクトします。構成の最初の部分(/
)は正常に機能しますが、Too many redirections
にアクセスしようとすると/october
エラーが発生しました。 2番目の部分(location /october/
)をコメントアウトし、最初の部分でlocalhost
を10.10.0.3
に置き換えようとすると、10月のプラットフォームにリダイレクトされます。したがって、問題はこのnginx構成にあります。
server {
listen 80;
server_name my.domain.io;
return 301 https://$server_name;
}
server {
listen 443 ;
ssl on;
ssl_certificate /etc/letsencrypt/live/my.domain.io/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/my.domain.io/privkey.pem;
server_name my.domain.io;
access_log /var/log/nginx/kibana.access.log;
error_log /var/log/nginx/kibana.error.log;
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
location /october/ {
proxy_pass http://10.10.0.3:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
}
}
以前の回答のおかげで、私は解決策を見つけましたが、それが「どのように」そして「なぜ」機能するのか正確にはわかりません...
これが私の新しい設定です:
server {
listen 80;
server_name my.domain.io;
return 301 https://$server_name;
}
server {
listen 443 ;
ssl on;
ssl_certificate /etc/letsencrypt/live/my.domain.io/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/my.domain.io/privkey.pem;
server_name my.domain.io;
access_log /var/log/nginx/kibana.access.log;
error_log /var/log/nginx/kibana.error.log;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
location = /october {
return 302 /october/;
}
location /october/ {
proxy_pass http://10.10.0.3:5601/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
}
proxy_redirect
ディレクティブは必要ありません。秘訣は、/
の場所の最後に/october
を追加し、/october
を/october/
whit302コードにリダイレクトすることでした。 kibana.ymlファイルでserver.basePath
を"/october"
に設定する必要があることを忘れないでください。
この投稿は私を助けました: nginx proxy_passでパスを削除する方法
これが役に立てば幸い...
locations
が正しくネストされていないと思います。次を試してください:
server {
listen 443 ;
ssl on;
ssl_certificate /etc/letsencrypt/live/my.domain.io/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/my.domain.io/privkey.pem;
server_name my.domain.io;
access_log /var/log/nginx/kibana.access.log;
error_log /var/log/nginx/kibana.error.log;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
location ~ ^/october.*$ {
proxy_pass http://10.10.0.3:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
}
指定された構成では、_/october/some/path
_へのリクエストはそのまま2番目のKibanaホストに渡されます。2番目のKibanaホストは、プレフィックスが_/october
_のリクエストを予期するように構成されていない可能性があります。
Kibanaはわかりませんが、すばやく検索すると、_server.basePath
_構成値を持つ 5.1の構成ドキュメント が表示されます。これを「/ 10月」に設定してみてください。
さらに、ドキュメントではこの値はKibanaによって生成されたURLにのみ影響を与えるため、_proxy_redirect
_ディレクティブをnginx構成に追加し、_proxy_pass
_ nginxディレクティブを変更して_/
_を追加する必要がありますバックエンドURL:
_server {
listen 80;
server_name my.domain.io;
return 301 https://$server_name;
}
server {
listen 443 ;
ssl on;
ssl_certificate /etc/letsencrypt/live/my.domain.io/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/my.domain.io/privkey.pem;
server_name my.domain.io;
access_log /var/log/nginx/kibana.access.log;
error_log /var/log/nginx/kibana.error.log;
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
location /october/ {
proxy_pass http://10.10.0.3:5601/;
proxy_redirect / /october/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $Host;
proxy_cache_bypass $http_upgrade;
}
}
}
_
_proxy_redirect
_は、 "Location"および "Refresh"ヘッダーで返されたURLを書き換えます。追加のスラッシュにより、プロキシモジュールは、nginxの "location"ディレクティブに一致するパスを削除します。これらは効果的に互いに補完し合います。