playframework,你可以在主机名/子域上路由吗?
Posted
技术标签:
【中文标题】playframework,你可以在主机名/子域上路由吗?【英文标题】:playframework, can you route on hostname/subdomains? 【发布时间】:2012-02-04 20:49:57 【问题描述】:我们正在将一个 seam 应用程序(2 个应用程序)移植到一个 play 应用程序,以测试现在的游戏(嗯,移植更难的场景......到目前为止,一切都很好)。
我们希望能够在主机名上路由根 / 目录。为了 http://alvazan.com/ 我们想路由到我们的 home.html 页面,但是对于
http://*.premonitionx.com/ 我们要路由到仪表板(如果未登录,它将重定向到登录页面)。
最后,我们要路由 http://premonitionx.com/ 重定向到 alvazan.com 网页。
另外,我们会喜欢这样的路线
http://company.premonitionx.com/project/release
在游戏框架中甚至可能吗????在开发模式下,我们现在有这些 url 可以在 seam 中使用
http://company.dev.premonitionx.com 这样我们就可以在我们的本地机器上测试并测试不同的公司等(如您所知,如果总是这样,许多测试就无法测试)本地主机)
谢谢, 院长
【问题讨论】:
【参考方案1】:有些文档更难找到。我在任何真实文档中都找不到它,但我记得它是发布的一部分...
http://www.playframework.org/documentation/1.1/releasenotes-1.1#routeHost
路由中的虚拟主机
路由文件现在支持主机匹配。如果必须从主机参数中提取操作参数,这将很有用。例如,对于 SAAS 应用程序,您可以使用:
GET client.mysoftware.com/ Application.index
然后像任何其他请求参数一样自动检索客户端值:
public static void index(String client)
// ...
【讨论】:
所以对于 http,当然。对于https,它不起作用,因为您需要每个域的证书和每个域的SSLEngine,而netty不支持使用多个SSLEngine,据我所知。我用我们自己的 nio 层解决了这个问题,这样我们就可以在这个网络服务器上支持多个域而不是 github.com/deanhiller/webpieces【参考方案2】:我认为通过routes
文件进行的虚拟主机正在运行,2.x 版不再可用。
但是您可以做的是准备一个控制器来代理此类请求。这是我在 play 2.8.x 中运行的示例代码:
@Singleton
class VirtualHostsController @Inject() (
langs: Langs,
ccs: ControllerComponents
) extends AbstractController(ccs) with I18nSupport
private val logger = Logger(classOf[VirtualHostsController])
def index() = Action implicit request =>
logger.info(s"Handling Virtual Hosts for $request.host")
request.host match
case "localhost:9000" => Redirect(routes.SomeController.show())
case "sub.domain.tld" => Redirect(routes.OtherController.show())
case _ => InternalServerError("unknown domain")
在routes
文件中你可以这样写:
GET / controllers.VirtualHostsController.index()
【讨论】:
谢谢,但我最终找到了原因。 java 并没有真正通过 https 支持它,我创建了自己的平台,托管在您想要的每个域上(每个证书都有 N 个 SSL 证书和一个 SSLEngine)。问题是大多数 nio 层都假设一个!我解析第一个 hello SSL 数据包但不修改。所以我的 webpieces 网络服务器现在支持它github.com/deanhiller/webpieces,而我认为 java 中的其他任何人都不会这样做,因为你必须解析 SSL hello 数据包。以上是关于playframework,你可以在主机名/子域上路由吗?的主要内容,如果未能解决你的问题,请参考以下文章