Shiny的websockets不适用于AWS EC2实例的端口80

时间:2017-03-09 08:23:15

标签: amazon-ec2 websocket shiny

我已在AWS服务器上设置了许可的Shiny Server Pro。它似乎基本上工作,但我想将默认端口从3838更改为80,这使我感到悲伤,可能是因为端口80没有像我期望的那样处理websockets。

因此,在安装之后,服务器会尽职地提供默认的welcome.html页面,其中包含两个嵌入式应用hellormd,所有内容都按预期工作。我将/etc/shiny-server/shiny-server.conf中的端口从3838更改为80后,总线将停止运行,这两个嵌入式应用程序将不再起作用。它们似乎加载,但加载后立即显示为灰色,并在“与服务器/重新加载断开连接”顶部显示一条消息。

我现在认为这是由端口80的选择引起的.AWS实例的安全组在端口3838上有一个“自定义TCP规则”,并允许此端口上的所有传入流量。 OTOH,端口80是“HTTP”类型,我似乎无法将其更改为“自定义TCP规则”(这是有道理的)。

在端口80配置Shiny服务器并在加载演示页面后查看Chrome的开发控制台时,我看到当网页完全加载时,网络选项卡上会出现websockets。但是,它们只存在几毫秒。相反,当使用端口3838时,相同的websockets是持久的并且不会终止。

同时,当使用端口80时,控制台选项卡上会显示连接已终止的消息:

Thu Mar 09 2017 08:47:46 [INF]: Connection opened. http://10.43.190.69/sample-apps/rmd/ 
Thu Mar 09 2017 08:47:46 [DBG]: Open channel 0  
Thu Mar 09 2017 08:47:46 [INF]: Connection closed. Info:{"type":"close","code":4705,"reason":"Unable to open connection","wasClean":true} 
Thu Mar 09 2017 08:47:46 [DBG]: SockJS connection closed

使用端口3838时缺少此消息:

Thu Mar 09 2017 09:09:28 [INF]: Connection opened. http://10.43.190.69:3838/sample-apps/hello/ 
Thu Mar 09 2017 09:09:28 [DBG]: Open channel 0
Thu Mar 09 2017 09:09:28 [INF]: Connection opened. http://10.43.190.69:3838/sample-apps/rmd/ 
Thu Mar 09 2017 09:09:28 [DBG]: Open channel 0 
Thu Mar 09 2017 09:09:30 [DBG]: Open channel 1
Thu Mar 09 2017 09:09:30 [DBG]: 2 message(s) discarded from buffer
Thu Mar 09 2017 09:09:30 [DBG]: 4 message(s) discarded from buffer

为了避免这个问题,我也尝试使用nginx和apache2作为反向代理,结果非常相似,所以我尝试使用没有代理的端口80。

编辑:端口3838上闪亮服务器时的netstat输出(全部好):

/home/ubuntu# netstat -tlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:ssh                   *:*                     LISTEN      1451/sshd
tcp        0      0 *:4151                  *:*                     LISTEN      6996/shiny-server
tcp        0      0 *:3838                  *:*                     LISTEN      6996/shiny-server
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      1451/sshd
当端口80上的Shiny服务器(嵌入式应用程序无法正常工作,没有websockets)时,

netstat输出:

/home/ubuntu# netstat -tlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:http                  *:*                     LISTEN      11116/shiny-server
tcp        0      0 *:ssh                   *:*                     LISTEN      1451/sshd
tcp        0      0 *:4151                  *:*                     LISTEN      11116/shiny-server
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      1451/sshd

所以我相信其他任何东西都没有在端口80上听。

任何人都可以提示吗?

干杯,

恩诺

0 个答案:

没有答案
相关问题