nginx现在支持代理websockets,但是我没有找到任何关于如何执行此操作的信息,而没有应用于使用websockets的URI 的单独位置块.
我见过一些人推荐这种方法的一些变化:
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://host:port;
}
Run Code Online (Sandbox Code Playgroud)
这是代理标准HTTP以及websockets的正确方法吗?我不希望将升级标头或连接设置为"升级",除非这是浏览器发送的内容,但这些proxy_set_header行是websockets工作所必需的.为什么nginx只转发原始的Upgrade/Connection标头?
我已经对此进行了实验,发现如果在没有两个proxy_set_header行的情况下运行,nginx不会代理Upgrade标头并将Connection标头从'upgrade'更改为'close'.使用它们,Connection是非websocket请求的"升级",这也很糟糕.
谢谢 :)
我想在Apache(反向)代理后面运行一个IPython笔记本Web服务器,而不是URL
https://my.server:XXXX
(其中XXXX是某个端口号)我可以使用
https://my.server/py0
我知道IPython使用websockets,我怀疑这是我的设置中缺少的部分,但我根本找不到关于如何配置它的适当详细描述.不幸的是,除此之外,IPython网络服务器设置文档没有太多关于代理的说法:
在代理后面,特别是如果您的系统或浏览器设置为自动检测代理,笔记本Web应用程序可能无法连接到服务器的websockets [...]
所以我决定自己尝试并将以下内容放入/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/
Run Code Online (Sandbox Code Playgroud)
通过URL"直接"访问IPython https://my.server:10000与广告一样完美.
URL https://my.server/py0(没有尾部斜杠)返回"404 Not found".
与尾部斜杠相同的https://my.server/py0/是"工作",因为它转发到https://my.server/login?next=%2F它,然后"自己找不到" - 显然是因为/ py0 /部分丢失了.也许我应该告诉IPython它怎么样?
也许相关的版本号:Ubuntu 14.04 LTS,Apache 2.4.7.
也许是相关的问题:nyx背后的IPython.但是,由于我的设置中的其他所有内容都由Apache处理完全满意,我不想再运行Nginx.
是否有任何好的灵魂在Apache之后成功配置了IPython笔记本网络服务器?如果是,那么请前进并分享您的知识:-)非常感谢!