gpt4 book ai didi

java - 如何在 Apache 反向代理后面的子目录上设置 Play?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:47 24 4
gpt4 key购买 nike

我有一个 Apache 2 前端,可以处理两种请求:

  • 对根文件夹的请求(例如 http://mysite.com/http://mysite.com/help )由 apache 本身 (PHP/Wordpress) 提供服务。
  • 将对“/playapp”子文件夹的特定请求转发给 Play!通过 mod-proxy 的反向代理:

mod-proxy.conf

ProxyPass        /playapp/ http://localhost:9000/
ProxyPassReverse /playapp/ http://localhost:9000/

最终结果是请求 http://mysite.com/playapp/Controller/action 作为 http://localhost:9000/Controller/action 到达 Play 服务器

现在,玩吧!正确提供页面,但所有链接(包括 javascript、css 和其他页面的链接)都已损坏。例如,如果 View 使用:

#{stylesheet 'style.css' /}

那么渲染的结果就是

<link rel="stylesheet" type="text/css" href="/public/stylesheets/style.css" charset="utf-8" ></link>

因此最终用户尝试获取 http://mysite.com/public/stylesheets/style.css,它返回 404,因为它实际上不是 Play 的一部分!应用程序。

在此处配置 Apache + Play 的正确方法是什么?

我正在寻找的结果是 Play!在最终呈现的 HTML 中返回这样的 URL(或者可能让 Apache 相应地重写 URL):http://mysite.com/playapp/public/stylesheets/style.css

此外,我确实需要一些在 Play 应用之外进行链接的功能。例如,我希望将主路由 (/) 映射到我的绝对根目录 (http://mysite.com/),而不是 Play 的根目录。

最佳答案

首先,重要的是:apache2 不能(轻易地)改变页面中的链接。所以 Play 必须已经提供了正确的。

使用子域将使所有这些完全透明,但让我们来解决您的问题。

你的问题确实有两点,

修复静态资源的子文件夹

使用刚刚设置的路由

GET/playapp/public/staticDir:public

你在使用 http.path

我认为 reverse 应该考虑到它....

外部链接

  • 此外,我确实需要一些在 Play 应用之外进行链接的能力。例如,我希望将主路由 (/) 映射到我的绝对根目录 (http://mysite.com/),而不是 Play 的根目录。

这听起来很简单:如果它在 play 应用程序之外,那么您就没有使用反向 url,所以只需将绝对路径放在您的链接中……或者您使用的是反向网址吗?如果是这样,你能举个例子吗?

关于java - 如何在 Apache 反向代理后面的子目录上设置 Play?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8724671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com