Comment faire pour exécuter IPython derrière un proxy Apache
Je voudrais lancer un IPython notebook serveur web derrière un Apache (reverse proxy de sorte qu'au lieu de l'URL
https://my.server:XXXX
(où XXXX est certain numéro de port) je pourrais utiliser
https://my.server/py0
Je suis conscient que IPython utilise les websockets, et je soupçonne que c'est la partie qui est absent de mon installation, mais je ne pouvais simplement pas trouver un convenablement description détaillée sur la façon de configurer ce. Malheureusement, le IPython la configuration du serveur docs n'ont pas beaucoup à dire concernant les procurations en dehors de cela:
Derrière un proxy, en particulier si votre système ou navigateur est configuré pour
la détection automatique du proxy, le cahier de l'application web peut ne parviennent pas à
connectez-vous au serveur de websocket[...]
J'ai donc décidé de l'essayer sur mon propre et de mettre ce qui suit dans /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/
Accès IPython "directement" sur l'URL https://my.server:10000
fonctionne parfaitement comme annoncé.
L'URL https://my.server/py0
(sans slash) renvoie "404 not found".
La même chose avec une barre oblique https://my.server/py0/
ne "travail" qu'il transmet à https://my.server/login?next=%2F
, qui est ensuite "Pas trouvé" dans son propre droit -- évidemment, parce que le /py0/partie s'est perdue. Je devrais peut-être dire IPython à ce sujet, mais comment ??
Peut-être important de numéros de version: Ubuntu 14.04 LTS, Apache 2.4.7.
Peut-être pertinent DONC, la question: IPython derrière nginx. Cependant, puisque tout le reste dans ma configuration est gérée par Apache à mon entière satisfaction, je ne veux pas courir de Nginx.
Est-il une bonne âme qui a été configuré avec succès IPython notebook serveurs web derrière Apache? Si oui, alors s'il vous plaît pas en avant et de partager vos connaissances 🙂 merci Beaucoup!
OriginalL'auteur Laryx Decidua | 2014-05-27
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce travail à l'aide de la configuration suivante.
IPython
IPython Notebook est à l'écoute à
http://localhost:8888/ipython
. Il est nécessaire d'ajouter le/ipython
préfixe, parce que IPython utilise des chemins absolus, donc ça doit être la même que le reverse proxy chemin.La
ipython_notebook_config.py
Apache
J'ai activé
mod_proxy
mod_proxy_http
mod_proxy_wstunnel
Dans la config d'apache, j'ai ajouté
pour un SSL est activé sur l'hôte virtuel définition.
La
RequestHeader set Origin "http://localhost:8888"
était nécessaire pour les websockets, sinon vous obtiendrez un 403 Forbidden.Maintenant IPython est accessible à
https://my.server.com/ipython
(pas de fuite/
!).RequestHeader
vous devez activermod_headers
trop (sudo a2enmod en-têtes)RequestHeader set Origin "http://localhost:8888"
fixe pour moi! Merci!!!! (J'utilise aussi CSP, j'ai donc dû ajouter / permettrewss:
là, aussi.)OriginalL'auteur Adam
AVERTISSEMENT: Ceci est assez bavard, comme je suppose que vous l'avez compris beaucoup de cela, mais à des fins de documentation, j'ai mis suffisamment de détails ici pour quelqu'un d'autre à suivre.
J'ai mis cette réponse ensemble après la mise en œuvre de ce moi-même avec l'aide de différents liens. La première à partir d'ici Websocket origine vérification échoue lorsqu'il est utilisé avec Apache WS proxy #5525. Je le répète, beaucoup de il ici, avec quelques modifications. D'autres liens sont référencés ci-dessous.
1. Configurer iPython:
C'est dans le post, mais plutôt que de faire comme le post original a suggéré, j'ai simplement suivi les instructions générales pour les L'exécution d'un ordinateur portable serveur. Avec ce fait, vous devriez être en mesure de tester l'installation, ce qui nécessite l'activation du port que vous avez ce configuré pour. Si cela ne fonctionne pas, alors tout d'Apache ne fonctionne pas.
2. Configurer Apache:
./configure --enable-proxy --enable-ssl --enable-deflate --enable-proxy-http --enable-proxy-wstunnel --enable-info --enable-rewrite --enable-headers
Ajouté
--enable-headers
ici, car ils n'ont pas été installés sur le mien. Aussi j'ai utilisé le Apache2 a2enmod de commande. Doncsudo a2enmod headers
,sudo a2enmod proxy
, etc.Si vous utilisez une version d'Apache avant 2.4, vous n'avez pas le
proxy_wstunnel
mod. Vous pouvez soit un patch votre version ou mise à niveau. Patcher votre version, vous pouvez suivre ces instructions. Assurez-vous de copier sur les deuxmod_proxy.so
etmod_proxy_wstunnel.so
. Pour obtenir leconfigure
script, vous devez exécuter./buildconfig
, qui a ses propres dépendances. Ceci est indiqué dans un commentaire qui y est.Dans Apache, créer un "sites-available/iPython.conf de fichier". À l'origine, je l'ai dit à ajouter à la
httpd.conf
ouports.conf
. L'ajout de votre propre fichier de site est beaucoup plus propres et vous permettra d'activer/désactiver la configuration lorsque vous le souhaitez.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>
NOTE 1: La poste utilise le port 8999, mais il peut être n'importe quel port que vous voulez. Vous voulez le port 80 ici, mais vous n'avez pas besoin de le préciser, donc, la modification ci-dessus donnerait:
<VirtualHost *:80>
... # Everything is the same here...
</VirtualHost>
NOTE 2: Puisque vous utilisez SSL, vous devez ajouter
SSLProxyEngine On
dans le corps de laVirtualHost
définition. Comme indiqué ci-dessus, le post n'a pas de ce particulier.NOTE 3: le Port 8888 est n'importe quel port ipython est en cours d'exécution sur. Changer cela en fonction de votre configuration.
NOTE 4: Si vous souhaitez héberger plusieurs applications, et c'est l'un d'entre eux, plutôt que d'avoir
/
et:8888/
, vous voulez/ipython
et:8888/ipython
ou ce que vous voulez de ce nom. Pour soutenir ceci, voir En cours d'exécution avec un autre préfixe d'URL.Activer la nouvelle configuration:
sudo a2ensite iPython
Si vous avez besoin de désactiver:
sudo a2dissite iPython
sudo service apache2 reload
Mon Environnement:
Ubuntu 14.04.1
Apache 2.4.7
ipython 2.3.0
EDIT: mis à Jour pour refléter les derniers changements que j'ai fait pour obtenir ce travail. J'ai aussi changé l'instruction de l'ordre de ce que je pense a plus de sens.
proxy_wstunnel
comme un patch parce que vous utilisez Apache 2.2 . Dans Apache 2.4, la wstunnel module est inclus.Pas de soucis. J'ai ajouté une clarification en ce qui concerne le patch. Merci!!!!
Mis à jour pour refléter mes dernières modifications.
La commande "sudo a2ensite iPython" doit être "sudo a2ensite iPython.conf". Au moins dans ma version de Apache.
OriginalL'auteur user1070304
Cela fonctionne pour jupyter et le hachage de mot de passe:
OriginalL'auteur Andrzej Jędrzejewski
Basé sur Apache configuration de @adam, je suis en train de mettre ici un plein support SSL
<VirualHost>
sections, mais sans le/ipython
préfixe, et je suis en donnant aussi le SSL-options pour toute personne intéressée:OriginalL'auteur ankostis
Sur les nouvelles versions de IPython/Jupyter qui ont un terminal, vous devez également ajouter des entrées pour les terminaux.
OriginalL'auteur L.J. Hanson
Je suis en utilisant apache version 2.4.18 dans un serveur sous Ubuntu 16.04.1 LTS(xenial)
et j'ai enfin mon jupyter portable fonctionnant grâce au protocole ssl.
J'avais déjà configuré la norme SSL sur mon serveur, donc https://. J'avais également suivi ces instructions: L'exécution d'un ordinateur portable serveur pour obtenir mon cert fichier et mon mot de passe dans la
jupyter_notebook_config.py
fichier de configuration. Ce qui me manquait était:Le fichier de configuration d'apache qui a fonctionné pour moi à l'aide de solutions à partir de plusieurs endroits et une partie de la réponse a été:
où XXXX est le port que vous utilisez, par exemple, 8888, et Abc pourrait être n'importe quel nom que vous voulez.
J'espère que cela peut vous aider.
Pas de problème. Je viens de réaliser que j'ai eu des barres obliques à la fin de tout. Je viens de l'en débarrasser.
OriginalL'auteur Pablo Reyes