2013-12-13 15 views
5

nginxからkibana(logstash)へのリクエストをプロキシしようとしています。私はポート9292でkibanaダッシュボードにアクセスできます - サービスがポート9292でリッスンしていることを確認できます.nginxから他のサービスに正常にプロキシできますが、kibana(ポート9292)のプロキシディレクティブは機能しません。 elasticsearchのために。これをさらにトラブルシューティングする方法に関するアイデアは高く評価されます。nginxからkibanaへのプロキシーができません

更新: アップストリームで0.0.0.0とサーバーアドレスを指すようにサーバー設定を変更しようとしましたが、いずれのオプションも機能しません。要求はデフォルトサーバーにルーティングされます。

別の更新: 私はnginxのデフォルトファイルからプロキシパラメータを削除すると、私はポートをlistneing kibanaに要求を転送することを可能にすることに気づいた - しかし、kibanaは、「ダッシュボード/ default.jsonを」行方不明文句たI推測は、nginxのいくつかの設定が間違っているか設定が間違っているためです。

デフォルト(の/ etc/nginxの/サイト-利用可能)

upstream logstash { 
     server 127.0.0.1:9292; ##kibana 
     keepalive 100; 
} 

server { 
     listen 84; 
     listen [::]:84 ipv6only=on; 
     root /var/www/; 
     index index.html index.htm; 
     server_name logstash; 

     ##logging per server 
     access_log /var/log/nginx/logstash/access.log; 
     error_log /var/log/nginx/logstash/error.log; 

     location/{ 
       proxy_redirect off; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       proxy_set_header Host $host; 
       proxy_pass http://logstash; 
     } 
} 
+0

最初にあなたが直接アクセスを確認する必要があります。たとえば、ブラウザで開いてみてください。http://127.0.0.1:9292/(ローカルマシンを使用している場合)またはcurl -v http://127.0.0.1:9292/ – ig0r

+0

直接アクセスプロキシの設定はできません。 –

+0

2つの問題が考えられます。まず、リクエストが9292(木場)になる必要があり、他のリクエストは9200(ESの場合)に行く必要があるようですが、それらのすべてを9292に送信しているだけです。2番目:埋め込まれた木場私は、スタンドアロンの設定では 'config.js'の変更がAJAXリクエストを9200以外のポートに向ける必要があることを知っています。あなたのプロキシは84でリッスンしているようですが、設定例](https://github.com/elasticsearch/kibana/blob/master/sample/nginx.conf)を参考にしてください。 – rutter

答えて

6

問題は、あなたのLogStash Webでログを見れば

proxy_pass http://your-logstash-host; 

になるようですが、あなたはよ"WARN - :Rack :: Protection :: JsonCsrfによる攻撃による攻撃の防止"を参照してください。

私はよく慣れていないいくつかの組み込みセキュリティがあります。クロスオリジンリソース共有攻撃を防ぎます。問題は、Nginxのproxy_passがルビーラック保護に対するCORS攻撃のように見えることです。

EDIT:

先に述べたように、モジュールラック::保護:: CSRFは、この警告を投げ1です。

私は、コードを開いていて、我々は明らかに何が起こっているかを見ることができます。

def has_vector?(request, headers) 
    return false if request.xhr? 
    return false unless headers['Content-Type'].to_s.split(';', 2).first =~ /^\s*application\/json\s*$/ 
    origin(request.env).nil? and referrer(request.env) != request.host 
end 

ので、ここでの必須nginxの設定シナトラがそれらを受け入れるように要求を渡すために必要な:

server { 
    listen  80; 
    server_name logstash.frontend.domain.org; 

    location/{ 
     # Proxying all requests from logstash.frontend to logstash.backend 
     proxy_pass http://logstash.backend.domain.org:9292; 
     proxy_set_header X-Real-IP $remote_addr; 

     # Set Referer and Host to prevent CSRF panick by Sinatra 
     proxy_set_header Referer my-host-04; 
     proxy_set_header Host my-host-04.domain.org; 

     # Alternatively to setting the Referer and Host, you could set X-Requested-With 
     #proxy_set_header X-Requested-With XMLHttpRequest; 
    } 
} 
+0

はい私は以前にもそれを見ていましたが、しばらくして問題を調査しました。問題が解決したら、私はそれを更新します。 –

+0

は説明したように動作します - merci! –

関連する問題