我可以将 AWS API Gateway WebSocket 代理到 WebSocket 吗?

问题描述 投票:0回答:3

目前我使用API网关作为一种代理来简单地提供https

https://random-aws-name.com => http://my-domain.com

路线是

$default

集成设置是

HTTP ANY -> http://my-domain.com

我现在必须在我的域上设置一个 Websocket 服务器,该服务器已经在 ws://my-domain.com 上监听。我可以直接连接到此套接字,但不使用 AWS API Gateway

wss://random-aws-name.com => ws://my-domain.com

目前我使用 wscat 遇到意外错误 400

我尝试启用 API 网关日志记录,但没有看到任何日志到达

amazon-web-services websocket aws-api-gateway
3个回答
6
投票

恕我直言,AWS API Gateway 只能提供 wss 端点并将请求路由到HTTP 后端。如果我们已经有后端 Websocket 服务器,我在 AWS API Gateway 中看不到执行此类路由的选项(尽管我很高兴被证明是错误的,因为我自己也有这样的要求。)。

我实际上尝试将 wss:// url 作为端点 URL,但在部署 API 时出现错误,提示

Invalid HTTP endpoint specified for URI


0
投票

您当前使用的 API 网关很可能不是 WebSocket API,而是 HTTP API 或 REST API。 API网关有不同的风格。部署时您可以选择一种口味。您部署的风格很可能不是支持 WebSocket 连接的风格。

根据此文档页面,代理的 WebSocket 连接可能只是单向的(请注意页面底部的蓝色框中):https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket- api-routes-integrations.html


0
投票

使用 Apache2 como 代理。

    ServerAdmin pedro.casas@********
    DocumentRoot /var/www/**************
    ServerAlias dominio.com

    SSLEngine on
    SSLCertificateFile /etc/ssl/****.crt
    SSLCertificateKeyFile /etc/ssl/****.key
    SSLCertificateChainFile /etc/ssl/****.ca-bundle

    
    SSLProxyEngine on
    ProxyRequests Off
    ProxyPass "/wss/"  "ws://xxx.xxx.xxx.xxx:3000/"                      
    ProxyPassReverse  "/wss/"  "ws://xxx.xxx.xxx.xxx:3000/"                            
© www.soinside.com 2019 - 2024. All rights reserved.