适用于多个应用程序和网站的Apache2反向代理

时间:2018-06-18 23:18:56

标签: node.js express proxy server apache2

我正在试图弄清楚如何配置我的apache站点 - 可用的反向代理。我的网站服务器包含两个express / nodejs应用程序。一个是运行端口3001和另一个(端口3000)的游戏,使用.pug文件为我的网站生成布局。因此,当您在没有反向代理的情况下访问我的网站时,它会将默认的Apache加载到页面(当然)。当你访问zeyeland.com网站时,我已经设置了我的反向代理去我的网站快递应用程序。我可以在zeyeland.com/bomberkidsonline上访问我的视频游戏,因为我设置了其他反向代理。

 RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
    RewriteCond %{QUERY_STRING} transport=websocket    [NC]
    RewriteRule /(.*)           ws://localhost:3001/$1 [P,L]

RewriteCond %{QUERY_STRING} transport=polling       [NC]
RewriteRule /(.*)           http://localhost:3001/$1 [P]

RewriteCond %{HTTP:Upgrade} websocket               [NC]
RewriteRule /(.*)           ws://localhost:3001/$1  [P]

ProxyPass        /socket.io http://localhost:3001/socket.io
ProxyPassReverse /socket.io http://localhost:3001/socket.io

ProxyPass /bomberkidsonline http://localhost:3001/
ProxyPassReverse /bomberkidsonline http://localhost:3001/

ProxyPass /arcadeisland http://localhost:3000/arcadeisland
ProxyPassReverse /arcadeisland http://localhost:3000/arcadeisland

ProxyPass / http://localhost:3000
ProxyPassReverse / http://localhost:3000

确定我遇到的问题是我无法访问我的服务器的其他部分,也就是使用常规html和javascript并且不需要端口的其他游戏。只有当我摆脱localhost:3000的反向代理或设置此特定代理时,我才能访问网站的这些部分:

ProxyPass /exampleText http://localhost:3000
ProxyPassReverse /exampleText http://localhost:3000

当我的反向代理设置为:

    ProxyPass / http://localhost:3000
    ProxyPassReverse / http://localhost:3000

我无法访问我的其他游戏网址,例如zeyeland.com/dungeonkids和zeyeland.com/spacedodge。当我删除上面的代理反向时,我可以访问这些地址。这对我来说是一个两难的问题,因为我喜欢我的快递应用程序,它使用哈巴狗在访问我的网站时首先访问网站布局。似乎每当我访问我的服务器上方的URL时,想要路由到当前的应用程序。这很奇怪,因为当我键入zeyeland.com/bomberkidsonline时,它会路由到相应的应用程序URL。我甚至尝试为使用html,csss和javascript的无端口游戏配置反向代理。

    ProxyPass /dungeonkids http://zeyeland.com/dungeonkids
    ProxyPassReverse /dungeonkids http://zeyeland.com/dungeonkids

这不起作用,我收到某种浏览器网关错误或其他什么。我该如何解决这个问题?使用express / nodejs服务网站不是一个好习惯吗?我应该使用普通的html,css和javascript创建我的网站吗?

0 个答案:

没有答案