amazon-web-services – 如何为WebSocket协议配置AWS ELB和Nginx?

weixin_38048154 2019-09-12 01:05:26
我在AWS中有N层架构Web应用程序. HTTP请求流顺序由此: > Nginx-ELB(公共ELB,代理Nginx)> Nginx(公共子网中的EC2实例,侦听端口80,代理到AP-ELB)> AP-ELB(内部ELB,AP-Server代理)> AP-Server(私有子网中的EC2实例,侦听端口80) 我想将WebSocket功能应用于此体系结构.如何配置两层ELB和Nginx后面?
...全文
143 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38061608 2019-09-12
  • 打赏
  • 举报
回复
使用另一个端口用于ws://协议,因为ELB不允许在不同模式(HTTP / TCP)中侦听相同的端口.例如:ws:// Nginx-ELB:8081 / ws-endpoint 这分为两部分解释. Nginx部分 >在端口80上侦听HTTP,然后代理到AP-ELB端口80.>在端口8081上侦听WebSocket,然后代理到AP-ELB端口8081. 关于WebSocket代理,您可以参考这个configuration. 配置示例如下: # Web server { listen 80; server_name localhost; charset utf-8; error_log /var/log/nginx/lnmnt/error.log error; access_log off; set $upstream_endpoint <ap_elb_domain_name>; more_set_headers 'Cache-Control: max-age=0, no-cache, no-store'; location / { proxy_connect_timeout 75; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass $upstream_adm_endpoint; } } # WebSocket server { listen 8081 proxy_protocol; server_name localhost; error_log /var/log/nginx/lnmnt/websocket.error.log error; access_log off; real_ip_header proxy_protocol; set $upstream_ws_endpoint <ap_elb_domain_name>:8081; location / { proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass $upstream_ws_endpoint; } } ELB部分 Nginx的-ELB 创建端口转发如下​​: > 80(HTTP)转发到80(HTTP)> 8081(TCP)转发到8081(TCP) 然后使用您的AWS CLI执行: aws elb create-load-balancer-policy \ --load-balancer-name Nginx-ELB \ --policy-name EnableProxyProtocol \ --policy-type-name ProxyProtocolPolicyType \ --policy-attributes AttributeName=ProxyProtocol,AttributeValue=True aws elb set-load-balancer-policies-for-backend-server \ --load-balancer-name Nginx-ELB \ --instance-port 8081 \ --policy-names EnableProxyProtocol AP-ELB 创建端口转发如下​​: > 80(HTTP)转发到80(HTTP)> 8081(TCP)转发到80(TCP) 不要为此ELB应用任何负载均衡器政策! 这部分让我头疼了好几天.如果对两个ELB应用相同的策略,则永远无法获得正确的结果. 现在,使用AWS ELB和Nginx享受您的WebSocket.

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧