【发布时间】:2013-01-05 08:42:15
【问题描述】:
我一直在从事一个使用 websockets 的 Perl Mojolicious 项目。我想在运行 apache 的共享服务器上启动它,并使用 proxyPass 和 proxyPassReverse 使我的 Mojolicious 代码与 Hypnotoad 一起运行的 url 更漂亮。
我的设置如下。
阿帕奇网址:
mydomain.com
Hypnotoad 网址:
mydomain.com:8080
通过以下 apache 条目,我可以将 Hypnotoad 服务器反向代理到
project.mydomain.com
apache.conf 条目
<VirtualHost *:80>
ServerName project.mydomain.com
DocumentRoot /var/www/project
<Directory /var/www/project/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://mydomain.com:8080/ keepalive=On
ProxyPassReverse / http://mydomain.com:8080/
RequestHeader set X-Forwarded-HTTPS "0"
</VirtualHost>
但是,当我使用时,我的 websocket 请求会出现 404 错误:
ws://project.mydomain.com/get-data
当我使用时出现 302 错误:
ws://mydomain.com:8080/get-data
我想这不是问题,因为 websocket 没有检查身份验证,但他们使用 Mojolicious 路由来检查您是否可以通过 websocket 发布。
据我所知,Apache 不支持反向代理 websocket。在 apache/httpd conf 文件中。
有没有人找到一个使用 Apache 的可用解决方案,该解决方案对于生产环境来说是稳定的?
【问题讨论】:
标签: apache websocket mojolicious proxypass