Как настроить IPython за nginx в подпути?

У меня nginx работает с обработкой всего материала SSL и уже проксимируется / экземпляром Redmine и /ci в экземпляр Jenkins.

Теперь я хочу служить экземпляром IPython на /ipython через тот же самый nginx.

В nginx.conf я добавил:

http {
    ...
    upstream ipython_server {
        server 127.0.0.1:5001;
    }

    server {
        listen 443 ssl default_server;
        ... # all SSL related stuff and the other proxy configs (Redmine+Jenkins)

        location /ipython {
            proxy_pass http://ipython_server;
        }
    }
}

В моем .ipython/profile_nbserver/ipython_notebook_config.py у меня есть:

c.NotebookApp.base_project_url = '/ipython/'
c.NotebookApp.base_kernel_url = '/ipython/'
c.NotebookApp.port = 5001
c.NotebookApp.trust_xheaders = True
c.NotebookApp.webapp_settings = {'static_url_prefix': '/ipython/static/'}

Указание моего браузера на https://myserver/ipython дает мне обычную индексную страницу всех ноутбуков в каталоге, в котором я запускал IPython.
Однако, когда я пытаюсь открыть один из существующих ноутбуков или создать новый, я получаю сообщение об ошибке:

Не удалось подключиться к WebSocket. Не удалось установить соединение с WebSocket. Вы не сможете запускать код. Проверьте сетевое подключение или конфигурацию сервера ноутбуков.

Я пробовал одну и ту же настройку с текущей версией версии stable (1.2.1, через pypi) и разработки (Git check master) IPython.
Я также попытался настроить конфигурацию nginx в соответствии с nginx обратными прокси-серверами безрезультатно.
Из-за принудительной политики я не могу разрешать подключения к серверу на других портах, чем 443.

Есть ли у кого-нибудь IPython, работающий за nginx?

Ответ 1

У меня была та же проблема. Я обновил nginx до текущей версии (1.6.0). Кажется, он работает сейчас.

Конфигурация сервера:

location /ipython {
    proxy_pass http://ipython_server;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Origin "";
}

Смотрите: http://nginx.org/en/docs/http/websocket.html