Wie zum ausführen von IPython hinter einem Apache-proxy
Ich würde gerne eine IPython-notebook-web-server hinter einem Apache reverse) proxy, so dass anstelle der URL
https://my.server:XXXX
(wobei XXXX für einige port-Nummer), die ich verwenden könnte
https://my.server/py0
Ich bin mir bewusst, dass IPython verwendet websockets und ich vermute, das ist der Teil, der fehlt in meinem setup, aber ich konnte einfach nicht finden, eine angemessen detaillierte Beschreibung, wie Sie diese. Leider ist die IPython webserver setup docs nicht viel zu sagen über proxies abgesehen davon:
Wenn hinter einem proxy, vor allem, wenn Sie Ihr system oder browser ist so eingestellt,
die automatische Erkennung der proxy, der notebook-web-Anwendung möglicherweise nicht
die Verbindung zum server, die websockets[...]
Also habe ich beschlossen, zu versuchen es auf meine eigene, und legen Sie die folgenden in /etc/apache2/sites-enabled/default-ssl.conf
:
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPass /py0/https://localhost:10000/
ProxyPassReverse /py0/https://localhost:10000/
Zugriff auf IPython "direkt" über die URL https://my.server:10000
perfekt funktioniert wie beworben.
URL https://my.server/py0
(ohne abschließenden slash) gibt "404 Nicht gefunden".
Gleich mit einem nachgestellten Schrägstrich https://my.server/py0/
bedeutet "Arbeit", dass es nach vorne zu https://my.server/login?next=%2F
, die dann "Nicht gefunden" in seinem eigenen Recht-offensichtlich, weil der /py0/Teil verloren gegangen. Vielleicht sollte ich sagen, IPython aber wie ??
Vielleicht relevanten zahlen version: Ubuntu 14.04 LTS, Apache 2.4.7.
Vielleicht relevante Frage ALSO: IPython hinter nginx. Jedoch, da alles andere in meinem setup erfolgt durch Apache zu meiner vollen Zufriedenheit, ich nicht wollen, zu laufen Nginx zusätzlich.
Gibt es eine gute Seele gibt, die erfolgreich konfiguriert IPython-notebook-web-Server hinter dem Apache? Wenn ja, dann bitte Schritt vorwärts, und teilen Sie Ihr wissen 🙂 Vielen Dank!
InformationsquelleAutor Laryx Decidua | 2014-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich diese Arbeit mit dem folgenden setup.
IPython
IPython Notebook hört in
http://localhost:8888/ipython
. Es war notwendig, um die/ipython
Präfix, weil IPython absolute Pfade verwendet, so muss es der gleiche sein wie der reverse Proxy Pfad.Den
ipython_notebook_config.py
Apache
Habe ich aktiviert
mod_proxy
mod_proxy_http
mod_proxy_wstunnel
In der apache config Hinzugefügt habe ich
zu einem SSL-fähigen virtuellen host-definition.
Den
RequestHeader set Origin "http://localhost:8888"
war notwendig für die websockets, sonst bekommt man einen 403 Forbidden.Nun IPython ist erreichbar auf
https://my.server.com/ipython
(ohne nachfolgende/
!).RequestHeader
Sie brauchen, ummod_headers
zu (sudo a2enmod Header)RequestHeader set Origin "http://localhost:8888"
es fest für mich! Danke!!! (Ich benutze auch CSP, so hatte ich Sie auf hinzufügen / ermöglichenwss:
es, zu.)InformationsquelleAutor Adam
WARNUNG: Das ist ziemlich ausführlich, da ich sammeln, die Sie festgestellt haben, dass viel, aber für Zwecke der Dokumentation, legte ich detailliert genug hier für jemand anderen zu Folgen.
Ich diese Antwort zusammen, das nach der Umsetzung dieser selbst mit Hilfe von verschiedenen links. Der erste von hier aus Websocket-origin-check schlägt fehl, wenn verwendet mit Apache WS-proxy #5525. Ich wiederhole viel, es hier mit einigen änderungen. Andere links sind unter verwiesen.
1. Einrichten iPython:
Dies ist in der post, aber anstatt zu tun, als die original-Beitrag vorgeschlagen, ich habe nur die Allgemeinen Anweisungen für Läuft ein notebook server. Mit diesem fertig sind, sollten Sie in der Lage sein, um die konguration zu testen, mit denen die Aktivierung der port konfiguriert. Wenn dies nicht funktioniert, dann alle Apache set-up funktioniert nicht.
2. Konfigurieren Von Apache:
./configure --enable-proxy --enable-ssl --enable-deflate --enable-proxy-http --enable-proxy-wstunnel --enable-info --enable-rewrite --enable-headers
Hinzugefügt
--enable-headers
hier, wie Sie waren nicht installiert auf meinen. Auch nutzte ich die Apache2 a2enmod Befehl. Sosudo a2enmod headers
,sudo a2enmod proxy
usw.Wenn Sie eine version von Apache vor 2.4, Sie haben nicht die
proxy_wstunnel
mod. Sie können entweder eine Installation oder ein upgrade. Um Patches für Ihre version, Sie Folgen können, diese Anweisungen. Werden Sie sicher, dass Sie über beidemod_proxy.so
undmod_proxy_wstunnel.so
. Um dieconfigure
Skript, das Sie ausführen müssen,./buildconfig
, die Ihre eigenen Abhängigkeiten. Erkennbar ist dies in einem Kommentar darin.Innerhalb Apache, erstellen Sie eine "sites-available/iPython.conf" - Datei. Ursprünglich habe ich gesagt, entweder hinzufügen
httpd.conf
oderports.conf
. Hinzufügen Ihrer eigenen site-Datei ist viel sauberer und Sie können aktivieren/deaktivieren die Konfiguration, wenn gewünscht.Listen [ANY PORT HERE] # post has port 8999 here...
...
<VirtualHost *:[ANY PORT HERE]>
SSLProxyEngine On # post did not have this...
ProxyPass /http://127.0.0.1:8888/
ProxyPassReverse /http://127.0.0.1:8888/
# spoof headers to make notepad accept the request as coming from the same origin
Header set Origin "http://127.0.0.1:8888/"
RequestHeader set Origin "http://127.0.0.1:8888/"
LogLevel debug
</VirtualHost>
HINWEIS 1: Die post verwendet den port 8999, aber es kann jedem Hafen, den Sie wollen. Du willst port 80 hier, aber Sie brauchen nicht, um es zu spezifizieren, also der änderung der oben genannten ergeben würde:
<VirtualHost *:80>
... # Everything is the same here...
</VirtualHost>
HINWEIS 2: Da Sie SSL verwenden, müssen Sie
SSLProxyEngine On
im Körper desVirtualHost
definition. Wie oben erwähnt, ist die post nicht diese speziell.HINWEIS 3: Port 8888 ist, was port ipython ausgeführt wird. Ändern Sie dies, basierend auf Ihrer Konfiguration.
HINWEIS 4: Wenn Sie möchten, um mehrere Anwendungen hosten, und dies ist einer von Ihnen, anstatt
/
und:8888/
Sie wollen/ipython
und:8888/ipython
oder was auch immer Sie wollen, dass dies benannt werden. Um dies zu unterstützen, sehen Läuft mit einer anderen URL-Präfix.Aktivieren Sie die neue Konfiguration:
sudo a2ensite iPython
Wenn Sie brauchen, um zu deaktivieren:
sudo a2dissite iPython
sudo service apache2 reload
Meine Umgebung:
Ubuntu 14.04.1
Apache 2.4.7
ipython 2.3.0
EDIT: Aktualisiert, um die letzten änderungen habe ich vorgenommen, damit es funktioniert. Ich habe auch die Anleitung, um das, was ich denke macht mehr Sinn.
proxy_wstunnel
als ein patch weil man den Apache 2.2 . In Apache 2.4, der wstunnel-Modul enthalten ist.Keine Sorge. Ich fügte hinzu, eine Klärung in Bezug auf den patch. Danke!!!
Aktualisiert, meine letzten änderungen.
Der Befehl "sudo a2ensite iPython" muss "sudo a2ensite iPython.conf". Zumindest in meiner version des Apache.
InformationsquelleAutor user1070304
Dies funktioniert für jupyter und Passwort-hash:
InformationsquelleAutor Andrzej Jędrzejewski
Basiert auf die Apache-config von @adam, ich habe hier eine volle SSL-bewusst
<VirualHost>
Abschnitte, aber ohne den/ipython
Präfix, und ich gebe auch die SSL-Optionen für alle interessierten:InformationsquelleAutor ankostis
Neueren Versionen von IPython/Jupyter, die ein terminal benötigen Sie auch Einträge hinzufügen, für die terminals.
InformationsquelleAutor L.J. Hanson
Ich bin mit der apache-version 2.4.18 auf einem server mit Ubuntu 16.04.1 LTS(xenial)
und schließlich habe ich meine jupyter notebook läuft über ssl.
Hatte ich schon konfiguriert, die standard-SSL auf meinem server, also https://funktioniert. Ich hatte auch befolgt diese Anweisungen: Läuft ein notebook server, um meine cert-Datei und mein Passwort in die
jupyter_notebook_config.py
Konfigurationsdatei. Was mir fehlte, war:Den apache-Konfigurations-Datei, die für mich gearbeitet mit Lösungen aus mehreren Orten und ein Teil der Antworten hier war:
XXXX ist der port, den Sie verwenden, z.B. 8888, - und Irgendetwas könnte ein beliebiger name sein, Sie wollen.
Ich hoffe, dass dies helfen kann.
Kein problem. Ich habe gerade festgestellt, dass ich hatte extra Schrägstriche am Ende von allem. Ich habe gerade von Ihnen zu befreien.
InformationsquelleAutor Pablo Reyes