apache - 如何在 Apache 到 Tomcat 上配置 WSS 到 WS
问题描述
我有一个使用 websockets 在 Tomcat 上运行的聊天机器人应用程序。为了让聊天机器人可以从安全 (HTTPS) 网站访问,我需要支持 SSL 证书。我没有将 Lets Encrypt 证书放在 Tomcat 上,而是将其安装在 Apache 上(因为这很容易从控制面板完成)并将 Apache 放在 Tomcat 前面。通过 HTTP ( http://example.com/myapp/?key=88 ) 访问应用程序时,应用程序工作正常,但通过 HTTPS ( https://example.com访问应用程序时,浏览器无法连接到 wss url /myapp/?key=88)。所以我正在尝试将 wss: 流量从浏览器转换为 ws: 以便应用程序可以从安全网站工作,而无需在 Tomcat 上安装 SSL
我需要转换的 URL 是 wss://example.com:8080/myapp/socketendpoint/88
,其中 URL 末尾的数字因不同的机器人而异。
需要转换成ws://example.com:8080/myapp/socketendpoint/88
我尝试了以下 Apache 配置(尝试各种来源的想法)
<VirtualHost x.y.z.w:80>
RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule ^/myapp/(.*) ws://example.com:8080/myapp/$1 [P,L]
ProxyPass /myapp http://example.com:8080/myapp
ProxyPassReverse /myapp http://example.com:8080/myapp
</VirtualHost>
<VirtualHost x.y.z.w:443>
SSLCertificateChainFile "......"
SSLCertificateFile "......."
SSLCertificateKeyFile "......."
SSLCipherSuite EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4
SSLEngine on
SSLHonorCipherOrder on
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2
SSLProxyEngine On
ProxyRequests Off
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/myapp[NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
ProxyPass /socketEndPoint/* ws://example.com:8080/myapp/socketendpoint/*
ProxyPassReverse /socketEndPoint/* ws://example.com:8080/myapp/socketendpoint/*
ProxyPass /myapp http://example.com:8080/myapp
ProxyPassReverse /myapp http://example.com:8080/myapp
</VirtualHost>
但是,Apache 正在记录错误
[proxy_http:error] [pid nnnn] (70007)指定的超时已过期:[client xyzw:60036] AH01102:从远程服务器 domain.com:443 读取状态行时出错,引用者:https ://example.com/myapp /?key=88
对于我要实现的目标,什么是合适的配置?
解决方案
推荐阅读
- c++ - 二叉搜索树的指针分配错误
- reactjs - 如何使用参数获得反应路由器路径?
- mongodb - 在 mongodb 分片集合中如何更新分片键值
- javascript - Quiz React App 的单选按钮问题。当我单击(问题编号 1 的选项编号 1)时,(问题编号 2 的选项编号 1 ...)也被单击。谢谢
- javascript - 从响应中隐藏部分 javascript 代码
- pandas - pandas.groupby --> DatetimeIndex --> groupby 年份
- loops - model.train() 和 model.eval() 导致 nan 值
- django - 在模型 B 上使用模型 A 中的特定字段。循环导入错误
- swift - 我们如何在另一个行范围之前获得行范围?
- python-3.x - 对数据集进行分类时出错:Python