如何在子路径中配置nyx后面的IPython?

时间:2014-03-26 15:30:35

标签: nginx proxy websocket ipython

我已经 nginx 正在运行处理所有SSL内容,并已将/代理到 Redmine 实例,/ci代理到< em> Jenkins 实例。

现在,我想通过同样的 nginx /ipython上提供 IPython 实例。

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连接。您将无法运行代码。检查网络连接或笔记本服务器配置。

我已尝试使用当前稳定版(1.2.1,通过pypi)和开发(Git checkout of master)版本的 IPython 进行相同的设置。
我也尝试根据nginx reverse proxy websockets调整 nginx 配置,但没有用 由于强制执行的策略,我无法在443以外的其他端口上允许与服务器的连接。

是否有人在 nginx 后面运行 IPython

1 个答案:

答案 0 :(得分:20)

我遇到了同样的问题。我将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