目前我们在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
问题:什么是解决此问题的好策略?
约束:
答案 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;
}