我已在AWS服务器上设置了许可的Shiny Server Pro。它似乎基本上工作,但我想将默认端口从3838更改为80,这使我感到悲伤,可能是因为端口80没有像我期望的那样处理websockets。
因此,在安装之后,服务器会尽职地提供默认的welcome.html
页面,其中包含两个嵌入式应用hello
和rmd
,所有内容都按预期工作。我将/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上听。
任何人都可以提示吗?
干杯,
恩诺