反向代理mulitple ipython notebook servers

时间:2015-07-30 08:57:17

标签: nginx ipython ipython-notebook reverse-proxy

目前我们在nginx代理后面运行Ipython笔记本服务器。这很好用,因为它是一个简单的1对1映射。

现在我们要在1个代理后面运行多个笔记本服务器。由于这些服务器将动态添加,因此代理也应该是动态的。

理想情况下,我想在url子路径上进行代理:

http://open.net/py1 -> http://secure1:8888
http://open.net/py2 -> http://secure2:8888
http://open.net/py3 -> http://secure3:8888
etc.

这种方法的问题在于Ipython并没有在其内部使用相对网址。提取:

<script src="/static/.../promise.min.js"</script>
<script src="/static/.../require.js"</script>
<script> ...

因此http://open.net/py2 require.js内部将通过http://open.net/static/.../require.js加载,当然会产生502.应该是http://open.net/py2/static/.../require.js

问题:什么是解决此问题的好策略?

约束

  • 我无法触及源html
  • 我不能为每个Ipython服务器使用子域(因为它们是动态添加的)

1 个答案:

答案 0 :(得分:1)

  

什么是解决这个问题的好策略?

子域

  

我不能为每个Ipython服务器使用子域(因为它们是动态添加的)

不正确。

# this will only py<some-digits> subdomain.
server {
    listen 80;
    server_name ~^(?<sub>py\d+)\.example\.com$;
    # now you have $sub variable that contains subdomain
    # and could be used to choose what server you want to connect
    ...
}

# catch all server block that simple shows 404 for any request
server {
    listen 80 default_server;
    return 404;
}