如何通过ELB连接到在Amazon AWS EC2实例上通过ssl提供的GlassFish Websocket?
我在GlassFish 4.1 b13预发布版中使用Tyrus 1.8.1作为我的Websocket实现。
端口8080未受保护,端口8181受ssl保护。
ELB DNS名称:elb.xyz.com
EC2 DNS名称:ec2.xyz.com
Websocket路径:/web/socket
我已成功地使用ws和wss直接连接到我的EC2实例(绕过我的ELB)。即以下两个URL均可正常工作:
ws://ec2.xyz.com:8080/web/socket
wss://ec2.xyz.com:8181/web/socket
我已成功地通过使用tcp 80> tcp 8080侦听器,在我的ELB上使用非ssl的ws。即以下URL可以正常工作:
ws://elb.xyz.com:80/web/socket
然而,我一直无法找到使用wss的方法。我尝试了很多事情。
我认为使wss通过我的ELB工作的最有可能的方法是在我的ELB上创建一个启用代理协议的tcp 8181> tcp 8181侦听器,并使用以下URL:
wss://elb.xyz.com:8181/web/socket
不幸的是,这并没有起作用。我猜我可能需要在GlassFish上启用代理协议,但我无法找出如何做到这一点(或者是否可能,或者是否必须对于wss在我的ELB上工作)。
另一个选项可能是以某种方式使ws或wss在ELB上终止的ssl连接运行,并通过使用ssl> tcp 8080侦听器而不受保护地继续到glassfish。但这对我来说也没有起作用,但可能一些设置不正确。
我在GlassFish 4.1 b13预发布版中使用Tyrus 1.8.1作为我的Websocket实现。
端口8080未受保护,端口8181受ssl保护。
ELB DNS名称:elb.xyz.com
EC2 DNS名称:ec2.xyz.com
Websocket路径:/web/socket
我已成功地使用ws和wss直接连接到我的EC2实例(绕过我的ELB)。即以下两个URL均可正常工作:
ws://ec2.xyz.com:8080/web/socket
wss://ec2.xyz.com:8181/web/socket
我已成功地通过使用tcp 80> tcp 8080侦听器,在我的ELB上使用非ssl的ws。即以下URL可以正常工作:
ws://elb.xyz.com:80/web/socket
然而,我一直无法找到使用wss的方法。我尝试了很多事情。
我认为使wss通过我的ELB工作的最有可能的方法是在我的ELB上创建一个启用代理协议的tcp 8181> tcp 8181侦听器,并使用以下URL:
wss://elb.xyz.com:8181/web/socket
不幸的是,这并没有起作用。我猜我可能需要在GlassFish上启用代理协议,但我无法找出如何做到这一点(或者是否可能,或者是否必须对于wss在我的ELB上工作)。
另一个选项可能是以某种方式使ws或wss在ELB上终止的ssl连接运行,并通过使用ssl> tcp 8080侦听器而不受保护地继续到glassfish。但这对我来说也没有起作用,但可能一些设置不正确。
有人对我之前提到的两个试验有什么修改意见吗?或者有人有其他建议吗?
谢谢。