我有一个运行许多 Web 应用程序的 CentOS 机器,我使用 Apache 代理对各种应用程序的请求。除了我似乎无法正常工作的 Erlang Nitrogen 应用程序之外,它们都在工作。
我正在以标准方式运行 Nitrogen 应用程序,它可以在机器上本地访问http://localhost:8000。我已经使用 wget 验证了这一点。
这是我尝试使用的 apache 配置文件:
ProxyRequests Off
ProxyPreserveHost On
<Proxy http://my-ip:8000/*>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /erlang http://my-ip:8000/
ProxyPassReverse /erlang http://my-ip:8000/
ProxyPassReverse /erlang http://my-ip/
此设置类似于系统上所有其他成功运行的代理,只是其他应用程序没有像 Nitrogen 那样部署到其服务器的根目录。
结果是基本页面正确下载到网络浏览器中,但所有附带的资源都没有。这给了我一个未设置样式的页面,其中 javascript 无法正常运行。
这是来自 Apache 的日志:
x.x.x.x - - [timestamp] "GET /erlang HTTP/1.1" 200 2884
x.x.x.x - - [timestamp] "GET /nitrogen/jquery.js HTTP/1.1" 404 484
x.x.x.x - - [timestamp] "GET /nitrogen/jquery-ui.js HTTP/1.1" 404 484
x.x.x.x - - [timestamp] "GET /nitrogen/livevalidation.js HTTP/1.1" 404 484
x.x.x.x - - [timestamp] "GET /nitrogen/nitrogen.js HTTP/1.1" 404 484
x.x.x.x - - [timestamp] "GET /nitrogen/bert.js HTTP/1.1" 404 484
x.x.x.x - - [timestamp] "GET /nitrogen/jquery-ui/jquery.ui.all.css HTTP/1.1" 404 484
x.x.x.x - - [timestamp] "GET /nitrogen/nitrogen.css HTTP/1.1" 404 484
x.x.x.x - - [timestamp] "GET /css/style.css HTTP/1.1" 404 484
我有一个使用 Apache 作为代理的硬性要求——我不会为了让这个 Nitrogen 应用程序正常工作而重新设置所有其他应用程序。在防火墙中打开 8000 端口也是不可能的。
只要不影响其他应用程序,我愿意使用任何 Apache 模块(mod-rewrite 等)或任何 Apache 设置。我还可以更改 Nitrogen 应用程序中的任何设置,以使其更好地与 Apache 配合使用。
如何使用 Apache 为我的 Nitrogen 应用程序代理/反向代理?