0

tl;dr - docker コンテナ内で nginx を実行しているときに、nginx 応答に特定のヘッダーを明示的に追加する方法は?

sebp/elk:latest イメージを使用して、RHEL 7.1 の Docker コンテナー内に ELK スタックをデプロイしました。また、Kibana グラフとは別に、開発した独自の散布図をレンダリングしたいと考えています。同じ docker イメージでインストールして実行する別の nginx Web サーバーを介してこれらのページをレンダリングしています。これは、Kibana 4 (sebp イメージ内) が Kibana 3 のような別の Web サーバーを自由に選択できないためです。Kibana 4 は独自の組み込みの非 nginx を使用しているため、Kibana 4 によってレンダリングされた URL/ページを編集できない可能性があります。私が理解できる限り、ウェブサーバー。問題は、自分の scatterplts を nginx のルート ロケーションにデプロイしてブラウザから取得すると、以下のエラーが発生することです。

XMLHttpRequest は http:///_search?size=500& を読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http://IP-of-my-server ' へのアクセスは許可されません。

DockerなしでELKを実行しているときにこの問題に直面しましたが、このリンクが役に立ちました- http://enable-cors.org/server_nginx.html

今はうまくいかないようです.Dockerイメージを構築しているときにホストからコンテナにconfをプッシュしています.コンテナがイメージからスピンアップすると、ログインしてnginxが実行され、nginx.confが使用されていることがわかります.しかし、実際の応答を分析すると、nginx に追加したはずのヘッダーが応答に追加されません。

Nginx 1.4 を使用しています。ポート マッピングの問題はなく、ホスト上で nginx を実行していません。これらのページがコンテナーまたはホストの nginx によって実際にレンダリングされているのではないかと疑う人もいるかもしれません。

この問題に直面して解決した場合は、助けてください。コンテナー内から Web サーバーを実行している場合、または docker にバグがある場合、または私の nginx バージョンで add_header がサポートされていない場合、ヘッダーは応答に追加されますか?

Web セキュリティを無効にして Chrome のセッションを開くと、Chrome で散布図が完全に表示されます。

chrome.exe --user-data-dir="C:/Chrome dev セッション" --disable-web-security

したがって、散布図コードまたはその他のものには問題はありません。conf/ を介して明示的に追加しようとしても、応答にヘッダーが含まれていないだけです

前もってありがとう、少し長い投稿で申し訳ありません。

4

1 に答える 1

0

問題は、nginx conf ではなく、elasticsearch 応答にあることに気付きました。:9200 からの応答でヘッダーが存在しないことをよく確認すると、"http" という名前のモジュールがあり、elasticsearch.yml ファイルでそのプロパティを編集できます。

以下のリンクが役に立ちましたが、API を介してそのヘッダーを許可する必要がありました。

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html

于 2016-04-07T12:23:07.373 に答える