使用 Apache 2.4 的闪亮服务器中的代理 Web 套接字

Posted

技术标签:

【中文标题】使用 Apache 2.4 的闪亮服务器中的代理 Web 套接字【英文标题】:Proxy web socket in shiny server using Apache 2.4 【发布时间】:2016-08-19 13:18:34 【问题描述】:

我正在使用 Apache 2.4、Ubuntu 14.04 背后的闪亮服务器(最新版本,1.4.2.786)。

按照在线文档 (https://support.rstudio.com/hc/en-us/articles/213733868-Running-Shiny-Server-with-a-Proxy) 的说明,我可以为 Web 套接字正确设置代理。但是,我想直接将我的 URL 指向一个闪亮的应用程序(不是所有应用程序)。

这是我当前的配置:

ProxyPreserveHost On
ProxyPassMatch "^/(.+)/websocket" "ws://localhost:3838/$1/websocket"
ProxyPass "/" "http://localhost:3838/users/username/appname/"
ProxyPassReverse "/" "http://localhost:3838/users/username/appname/"
ProxyRequests Off

使用此配置,我仍然收到错误消息:

WebSocket connection to 
'wss://my-url/__sockjs__/
n=WxwgyafTMc2bWeH5eR/787/mx9zqt68/websocket' 
failed: Error during WebSocket handshake: 
Unexpected response code: 500

我猜这是由socket的代理配置引起的。感谢您提供任何修复它的建议。

【问题讨论】:

【参考方案1】:

你见过this吗?它说你的代码应该是这样的:

ProxyPreserveHost On
ProxyPassMatch "^/(.+)/websocket" "ws://localhost:3838/$1/websocket"
ProxyPass "/users/username/appname/" "http://localhost:3838/users/username/appname/"
ProxyPassReverse "/users/username/appname/" "http://localhost:3838/users/username/appname/"
ProxyRequests Off

希望有帮助!

【讨论】:

感谢您的 cmets。我确实想将我的网址指向我的特定目录。只有 websocket 在我的配置中不起作用。 哦,好的。我会尝试寻找解决方法 我也无法让直接应用链接正常工作。该应用程序加载,但有些缓慢。 ProxyPassMatch 位让我意识到问题的真正所在。谢谢。

以上是关于使用 Apache 2.4 的闪亮服务器中的代理 Web 套接字的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4 代理 AJP 使用 Tomcat 8 服务多个域

Apache 2.4 - 简单的反向代理 - 不适用于多个条目

Apache 2.4 反向代理设置不能强加基本身份验证

带有 VirtualHost 代理的 Apache 2.4 缓存

apache 2.4 AJP 代理不工作

如何让 Gitlab 6.5 在 Apache 2.4 代理下显示其图标?