2016-04-05 10 views
0

tl; dr - Wie fügt man explizit einen Header in nginx response ein, wenn nginx in einem Docker-Container ausgeführt wird?nginx in einem Docker-Container fügt nicht den Header access-control-allow-origin wie in der conf-Datei hinzu

Ich habe ELK-Stack in einem Docker-Container auf einem RHEL 7.1 mithilfe von Sebp/Elk: neueste Bild bereitgestellt. Ich möchte auch meine eigenen Scatterplots, die ich entwickelt habe, außer Kibana Graphen darstellen. Ich rende diese Seiten über einen separaten nginx-Webserver, den ich installiere und im selben Docker-Image ausführe. Dies liegt daran, dass Kibana 4 (im sebp-Image) keine Freiheit gibt, einen anderen Webserver wie Kibana 3 zu wählen, und ich kann die von Kibana 4 erstellten URLs/Seiten möglicherweise nicht bearbeiten, da es sein eigenes nicht-nginx verwendet Webserver soweit ich das verstehen konnte. Nun, das Problem ist, wenn ich meine Scatterplts auf Nginx Root-Speicherort bereitstellen und vom Browser abrufen, bekomme ich unter Fehler.

XMLHttpRequest kann http: /// _ search nicht laden size = 500 &. Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Origin 'http://IP-of-my-server' ist daher nicht erlaubt.

hatte ich dieses Problem konfrontiert, während ELK ohne Docker läuft, aber diese Verbindung hat mir geholfen - http://enable-cors.org/server_nginx.html

Nun ist es nicht zu funktionieren scheint, ich bin Drücken der conf von meinem Host Container während der Docker Bau image und wenn ein container aus dem image hochgeschleudert wurde, konnte ich mich anmelden und sehen, dass nginx läuft und meine nginx.conf verwendet wird, aber wenn ich die tatsächliche antwort analysiere, wird kein solcher header zur response hinzugefügt, obwohl es so sein sollte wie ich fügte es in nginx hinzu.

Nginx 1.4 wird verwendet. Es gibt kein Problem bei der Portzuordnung und ich führe kein nginx auf dem Host aus, da einige von Ihnen vermuten könnten, dass diese Seiten tatsächlich von nginx des Containers oder des Hosts gerendert werden.

Bitte helfen Sie, wenn Sie dieses Problem gelöst und gelöst haben. Wird der Header zur Antwort hinzugefügt, wenn Sie den Webserver aus dem Container heraus ausführen oder ein Fehler in Docker ist oder add_header in meiner nginx-Version nicht unterstützt wird?

Wenn ich eine Sitzung von Chrome mit deaktivierter Web-Sicherheit öffne, bekomme ich meine Streudiagramme in Chrom perfekt.

chrome.exe --user-data-dir = "C:/Chrome dev Sitzung" disable-web-Sicherheit

So Scatterplot Code oder etwas anderes ist definitiv kein Problem. Es ist nur mit der Kopfzeile in der Antwort abwesend, obwohl ich explizit versuchen, es durch conf/

Vielen Dank im Voraus, Entschuldigung für ein bisschen lange Post.

+0

Können Sie Ihre nginx Config bitte einfügen. – tpbowden

+0

Ich würde vorschlagen, Sie bekommen in den Container und debuggen dies ... docker exec -it containerName bash ... ist alles wie erwartet in den Container? irgendwelche Warnungen beim Angeben/Neustart von NGINX? ist die Version von NGINX im Container wie erwartet?benutzt NGINX die richtige conf-Datei? – danday74

Antwort

0

Gerade realisierte Ausgabe war mit elasticsearch Antwort und nicht in nginx conf. Wenn Sie sorgfältig sehen, dass der Header nicht vorhanden ist, antworten Sie wie folgt: 9200, daher gibt es ein Modul namens "http", und Sie können seine Eigenschaften in der Datei elasticsearch.yml bearbeiten.

Unterlink geholfen, musste diesen Header über seine APIs zulassen.

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