首页 > 解决方案 > 在 Apache 403 错误上解析服务器实时查询 Wss 连接

问题描述

我一直在努力让解析服务器实时查询工作一周,无论我做什么,我都无法让 apache 让 wss:// 连接通过。

我正在使用在 linux/apache ec2 实例上设置解析服务器和仪表板的 bitnami ami。

我需要这个在 https/wss 上工作,并尝试了 2 个不同的方向。

第一种是直接将域指向实例 IP,并使用内置的让加密工具 bitnami 包到 ami 中来创建 ssl 证书。我认为这种方式绕过了 AWS 负载均衡器和通过其证书管理器颁发的证书的任何潜在问题。我可以通过 https 连接一切,但 wss 连接总是被阻止。

我尝试的第二种方法是将域指向负载均衡器并使用来自 aws 证书管理器的证书。我想我无法直接进入实例,所以我不妨试一试。不,同样的事情。

在我的解析日志中,它说实时查询服务器已经启动,它记录在 onListen 事件中,所以我认为这不是解析实时查询服务器本身的问题,而是它必须是某种 apache 问题,我无论如何,我都不是 apache 大师。

ami 已经启用了 proxy_wstunnel_module 并且正在为 http 使用反向代理。我尝试将以下的多种变体添加到 httpd.config 但我所做的任何事情似乎都没有任何效果:

#RewriteEngine on
#RewriteCond ${HTTP:Upgrade} websocket [NC]
#RewriteCond ${HTTP:Connection} upgrade [NC]
#RewriteRule .* "ws://127.0.0.1:1337/$1" [P,L]

#ProxyPass "/parse" "wss://127.0.0.1:1337/parse"
#ProxyPassReverse "/parse" "wss://127.0.0.1:1337/parse"

在这个特定方面的文档充其量是稀缺的,我能找到的是 nginx,而不是 apache。

我还没有尝试过的一件事是使用 redis 单独运行实时查询服务器,但我想如果我不能让这个更简单的设置正常工作,那么即使考虑进入那个潜在的兔子洞也是没有意义的。

Parse 非常适合我需要构建的东西,因为我不能使用 Firebase,但我必须让实时查询服务器在 wss 上安全地工作才能使用它,所以我现在几乎被卡住了。

任何人都有过让这个工作的经验,或者对如何尝试通过 wss 进行连接有任何想法?

标签: apacheamazon-ec2parse-platformbitnamiparse-live-query

解决方案


我终于让它工作了。

在 parse-https-vhost.conf 文件中,我在虚拟主机下添加了以下内容:

SSLProxyEngine on RewriteEngine On RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /(.*) ws://localhost:1337/$1 [P,L]

ProxyPass "/parse" "ws://127.0.0.1:1337/parse" ProxyPassReverse "/parse" "ws://127.0.0.1:1337/parse"

我不知道这是否真的安全,来自客户端的订阅调用通过 wss:// 并且它没有给出任何警告或错误,所以我想我现在很好。


推荐阅读