使用 Auto Scaling 弹性负载均衡器在 AWS Elastic Beanstalk 上运行 Grails 网络应用程序。
我们有另一个 AWS EC2 实例运行我们的博客,即。 blog.domain.com
有没有办法将流量从 domain.com/blog 路由到博客 EC2 实例?我知道使用 Apache 可以将代理传递给 Tomcat 实例,但是可以反过来吗?如果是这样,它甚至可以与 Auto Scaling 一起使用吗?
最佳答案
您可以在您的 grails 应用程序中将 /blog
配置为 Controller ,方法如下:
class BlogController {
def index() {
redirect(url: "http://blog.domain.com")
}
}
编辑:我的回答没有解决指定代理而不是重定向的问题...所以这是我的修改版本:
我采用了此处提供的现有 Java 代理 servlet 代码:http://edwardstx.net/2010/06/http-proxy-servlet/并在这里实现了一个 Grails Controller :https://github.com/AtlasOfLivingAustralia/biocache-hubs/blob/master/grails-app/controllers/au/org/ala/biocache/hubs/ProxyController.groovy (太大而无法粘贴)
将以下内容添加到您的 URL 映射文件中:
"/blog/$path**" (controller: 'proxy'){
action = [POST:'doPost']
}
"/blog/$path**" (controller: 'proxy'){
action = [GET:'doGet']
}
根据内存,我认为这段代码希望 $path
是一个完整的 URL,您可能希望将 URL 前缀存储在一个字段中,并且只传递链接中的路径部分(如果说得通)。请注意,您不会显示任何布局等,它只会重现在其他应用程序中创建的页面。您可以使用 cache plugin 添加一些缓存。 .
编辑 2:此代码可能对您的要求有些矫枉过正,您最好编写一个简单的 GET 服务,然后将其发送回客户端...如此处所述Writing a proxy in grails
关于apache - Tomcat 到 Grails 中的 Apache 代理/URL 子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762984/