Apache2和node.js应用程序同时在网络服务器上运行

时间:2019-03-06 12:02:39

标签: javascript node.js apache proxy webserver

我想在我的Web服务器上同时运行apache2和一个node.js应用程序。 我希望我在www.example.com/myApp上的网站运行我的应用程序(从端口8080代理),而在www.example.com/*上的所有其他文件都由apache运行(通常在端口80上)。我已经在StackOverflow上阅读了几个与此有关的问题,但无法正常工作。

我正在使用

yarn start --port 8080 --host 0.0.0.0 --disable-host-check

启动我的应用。

为此,我在Ubuntu 18.04 VM上的apache.conf文件中更改了值。我正在用纱线运行我的应用程序。

我启用了

sudo a2enmod proxy && sudo a2enmod proxy_http

在配置文件中有以下几行:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ServerName example.com
ProxyPreserveHost On
ProxyRequests Off

如果我添加

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

到我的apache.conf文件中,该应用程序在 www.example.com 上成功运行。 但是,我只能从安装/运行应用程序的文件夹中访问目录。我无法访问apache的目录。

如果相反,我添加

ProxyPass /myApp/ http://localhost:8080/
ProxyPassReverse /myApp/ http://localhost:8080/

然后该应用程序在 www.example.com/myApp 上运行,这正是我想要的,但是它无法正常运行,我不知道为什么。 网站上的所有其他网址都指向我的apache目录(/ var / www / html),这也是我想要的。

该应用程序始终可以在localhost:8080上正常运行。

我对这些事情没有经验,感觉我真的很接近第二种解决方案,但是由于应用程序无法正常工作,我必须缺少一些东西。

1 个答案:

答案 0 :(得分:0)

我设法用此配置解决了问题:

ProxyPass /index.html http://0.0.0.0:8080/
ProxyPassReverse /index.html http://0.0.0.0:8080/

ProxyPass /config http://0.0.0.0:8080/config/
ProxyPassReverse /config http://0.0.0.0:8080/config/
ProxyPass /css http://0.0.0.0:8080/config/
ProxyPassReverse /css http://0.0.0.0:8080/config/
...

因此,通过创建到index.html文件的代理传递并为应用程序文件夹中的所有子文件夹添加代理。 我帮助自己解决了thisthis之类的问题。