【问题标题】:Problem with apache rewrite for nodejs appnodejs应用程序的apache重写问题
【发布时间】: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


    【解决方案1】:

    对样式表/javascript 文件的引用在您的应用程序中定义为http://x.x.x.x/css/style.css,我认为当您不使用反向代理时它可以正常工作。所以查询文件可以相对于/进行

    通过以您配置的方式使用反向代理,必须相对于 /adminMongo/ 查询文件,这与您观察到使用 URL http://x.x.x.x/adminMongo/css/style.css 工作正常的结果相符。

    我可以想到以下解决方案:

    1. 调整apache配置,定义专用虚拟主机,然后配置 新虚拟主机的反向代理,因此您不需要 adminMongo 部分将包含在 URL 中。
    2. 调整应用内的路径以加载资源(css、javascript、 ...) 来自/adminMongo/...
    3. 将应用程序的资源复制到 apache 提供服务的目录 相对于 URL / 的文件来自,例如到/var/www/html/css。这 会导致apache传递css、javascript等静态 内容直接

    【讨论】:

    • 感谢您的回复。关于虚拟主机 - 目前我在 /var/www/html 上有工作网络,而 adminMongo 是 html 目录中的子目录 - 如果没有额外的主机名,我将无法仅为 adminMongo 子目录创建虚拟主机 - 第二点需要修改源代码,所以它不是最好的解决方案 - 在最坏的情况下它应该是第 3 个,但这会在 html 目录中造成一些混乱。这就是为什么我考虑重写 - 不幸的是 - 到目前为止没有成功。
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多