apache - 在 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 进行连接有任何想法?
解决方案
我终于让它工作了。
在 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:// 并且它没有给出任何警告或错误,所以我想我现在很好。
推荐阅读
- jenkins - Jenkins构建到Nexus后如何上传工件
- pandas - 检查一个数据框中一列中的值是否在另一个数据框中两列中的值之间的范围内
- javascript - 如果设置了另一个字段,则验证表单中的字段
- java - Spring Data 返回类型为抽象类或接口错误
- matlab - ZMCSCG频道的代码是这样的吗?h_1=sqrt(1/2)*(randn(N,1)+1i*randn(N,1));
- java - Excel 数据未填充到 Web 表单中
- python - 将多个值分配给数据框中的不同单元格
- mysql - Laravel 5.7 迁移拆分读写数据库的问题
- google-cloud-platform - VPC 原生 GKE 集群生产准备好了吗?
- python - Django python AttributeError异常值:'WSGIRequest'对象没有属性'shop'