使用restbean服务器和websocket with elasticbeanstalk,java,无法连接
我想配置nginx路由,以便能够使用其余服务器(使用Java Spark)和Websockets(使用Netty-socketIO)。使用restbean服务器和websocket with elasticbeanstalk,java,无法连接
它在本地运行得很好,但无法在aws elasticbeanstalk上运行。
我的Java星火监听端口是5000,这是从http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-platform.html
默认情况下,默认情况下,弹性魔豆配置nginx的代理端口将请求转发给应用程序5000
和这样可行。
我在端口9000上监听Websocket。我确实将ELB协议更改为TCP。
而且还是从AWS文档:
为了延长弹性青苗的默认nginx的配置,配置的.conf文件添加到一个名为.ebextensions/nginx的/ conf.d /在你的应用程序源代码包文件夹。 Elastic Beanstalk的nginx配置会自动在此文件夹中包含.conf文件。
其中我尝试没有成功:
server {
location/{
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
SocketIO-客户端连接字符串http://beanstalk-address-here.us-east-1.elasticbeanstalk.com:9000
在网络选项卡中,该请求是(待定)为失败之前的时间。
有一个问题可能是您没有将ELB正确配置为除端口9000上的连接。您必须在ELB配置安全组正确允许非标准端口上的连接:
https://aws.amazon.com/premiumsupport/knowledge-center/elb-connectivity-troubleshooting/
为什么你使用nginx的,如果你仍然可以通过非标准端口访问你的应用程序
Nginx的路由通常接受一个单一端口(通常80/443)和基于配置路径上的所有连接,它会重定向到任何特定的IP /端口
你nginx的配置文件,应主要有这些
Nginx的侦听端口
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
}
重定向列表
server{
....
location/{
proxy_pass http://<your-app-ip>:<your-app-port>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
现在重启nginx的
你的应用网址http://beanstalk-address-here.us-east-1.elasticbeanstalk.com:9000
你对重定向URL是http://beanstalk-address-here.us-east-1.elasticbeanstalk.com(nginx的会听到港口8 0并重定向到您的应用程序端口)
您是否在目标组上启用了粘性?没有它网络套接字无法工作我猜 – Deepak