【发布时间】:2019-03-06 12:02:38
【问题描述】:
我想在我的网络服务器上同时运行 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 文件中的值。我正在使用 yarn 运行我的应用程序。
我启用了
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 上运行,这正是我想要的,但 它不再正确运行, 我不知道为什么。 网站上的所有其他 url 都指向我的 apache 目录 (/var/www/html),这也是我想要的。
该应用程序始终在 localhost:8080 上正常运行。
我对这些事情没有经验,感觉我真的很接近第二种解决方案,但由于应用程序停止正常工作,我一定遗漏了一些东西。
【问题讨论】:
-
it does not run correctly anymore是什么意思 -
本地主机上的应用程序始终正确运行 - 这是一个播放音频文件的应用程序。但是,当我打开 www.exampple.com/myApp 时,我只能看到一条错误消息,上面写着“您的浏览器不支持我们需要的功能”,这显然不是问题。
-
是应该加载的页面(我正在考虑 htm 和 css)
-
否,页面未正确加载。显示了一些图片,它们的尺寸不正确。超链接虽然有效。我刚刚发现,如果我像这样删除最后一个斜杠符号:
ProxyPass / http://0.0.0.0:8080ProxyPassReverse / http://0.0.0.0:8080,我会得到同样的错误。我认为调用错误的应用目录肯定有问题。 -
页面已加载,这是个好消息!这意味着反向代理正在工作。图片未正确显示,这可能是 css 文件未加载。你能检查他们是否是吗?
标签: node.js apache proxy webserver