2017-04-03 55 views
3

我想配置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

在网络选项卡中,该请求是(待定)为失败之前的时间。

+0

您是否在目标组上启用了粘性?没有它网络套接字无法工作我猜 – Deepak

回答

0

为什么你使用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并重定向到您的应用程序端口)

相关问题