【发布时间】:2016-04-07 10:06:15
【问题描述】:
我知道有几个这样的问题,但我找不到一个解决我的问题的项目,它不在服务器根目录中。 我有以下情况:我有一个运行多个项目的 Apache 服务器,例如:
0.0.0.0/project1
0.0.0.0/project2
我添加了一个 node.js 项目,我们称之为nodeproject。使用 ProxyPass,我将向0.0.0.0/nodeproject 发出的请求传递给运行我的节点服务器的0.0.0.0:8080。除了 socket.io 的 websocket 配置外,这一切都很好。
在我的/etc/apache2/apache2.conf 文件中,我放置了这段代码来进行代理。 mod_proxy_wstunnel 已启用,我基本上是从 here 复制而来的。
ProxyRequests off
ProxyVia on
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/nodeproject/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:8080/$1 [P,L]
ProxyPass /nodeproject/socket.io http://localhost:8080/socket.io
ProxyPassReverse /nodeproject/socket.io http://localhost:8080/socket.io
<Location /nodeproject>
ProxyPass http://localhost:8080
ProxyPassReverse http://localhost:8080
</Location>
失败的请求如下所示:
ws://0.0.0.0/nodeproject/socket.io/?EIO=3&transport=websocket&sid=MDuVcHmt3T1sa8ruAAAa
我收到一个错误的请求 400 响应。
我不是配置这类东西的专家,我哪里出错了?
提前致谢!
【问题讨论】:
标签: node.js apache proxy socket.io