我想在我的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上正常运行。
我对这些事情没有经验,感觉我真的很接近第二种解决方案,但是由于应用程序无法正常工作,我必须缺少一些东西。
答案 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文件的代理传递并为应用程序文件夹中的所有子文件夹添加代理。 我帮助自己解决了this和this之类的问题。