【发布时间】:2020-10-07 19:21:28
【问题描述】:
我在这个案子上挣扎了几个小时,无法弄清楚。
Apache 充当在 localhost 地址上工作的 nodejs 应用程序的代理反向 - 在我的情况下为 127.0.0.1:7777(更准确地说,应用程序是 adminMongo)。
因为我有工作的 apache 配置,所以我不想弄乱它并将所有内容重新配置为 VirtualHosts,所以我创建了这样的位置
<Location /adminMongo>
Header edit Location "/app" "/adminMongo/app"
ProxyPass "http://127.0.0.1:7777"
ProxyPassReverse "http://127.0.0.1:7777"
</Location>
我添加了标题重写,因为在我输入 /adminMongo url 后应用程序立即重定向(到 /app) - 现在页面正在加载但没有任何 js/css 文件 - 对于每个我得到 404
我尝试了许多不同的 RewriteRules,但无法弄清楚。
现在我得到例如http://x.x.x.x/css/style.css - 它应该是 http://x.x.x.x/adminMongo/css/style.css(如果我将此网址粘贴到浏览器中,什么可以正常工作)。
抱歉 - 我在 apache 配置中完全是跛脚;)
有什么想法吗?
已解决
终于解决了——主要问题是对静态文件的请求与 / 相关——就像 mottek 指出的那样。值得庆幸的是,adminMongo 有上下文选项,所以在我添加上下文“adminMongo”之后,所有请求都应该像这样传递 127.0.0.1:7777/adminMongo
现在可以使用 rewrite,我的 Location 指令如下所示:
<Location>
RewriteEngine on
RewriteRule "/adminMongo/$" "/adminMongo/app/connection_list" [L]
RewriteRule "/adminMongo/(.*)$" "http://127.0.0.1:7777/adminMongo/$1" [L,P]
</Location>
也许这不是最好的解决方案,但至少它是有效的;)
【问题讨论】:
标签: node.js apache url-rewriting