首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我(DNS)可以将一个子域映射到多个Play Framework入口点吗?

我(DNS)可以将一个子域映射到多个Play Framework入口点吗?
EN

Stack Overflow用户
提问于 2014-08-08 20:06:46
回答 2查看 385关注 0票数 0

下面的情况可能吗?我只理解基本形式的DNS的警告。

我们有一个API (使用构建),我们希望通过一个地址(比如http://api.publicname.com )提供这个API。

但是,我们希望将这个API分成两个播放项目(例如myapione和myapitwo)。然后只使用一个域而使用两个单独的“子文件夹”来访问它们。

所以我一直在寻找地图的可能性比如说..。

http://myinternal.domain:9000http://api.publicname.com/myapione

..。和另一个应用程序

http://myinternal.domain:9001http://api.publicname.com/myapitwo

我们正在寻找的最终结果如下所示。我们的电话看起来就像..。

http://myinternal.domain:9000/products/123也是http://api.publicname.com/myapione/products/123

http://myinternal.domain:9001/orders/456也是http://api.publicname.com/myapitwo/orders/456

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-12 14:33:00

目标:

代码语言:javascript
运行
复制
Public URL              -> maps to -> internal URL
http://api.publicname.com/myapione -> http://localhost:9000
http://api.publicname.com/myapitwo -> http://localhost:9001

正如@applicius所说,它是通过一个“前端”或“原始”HTTP服务器来实现的,该服务器将请求代理到较低级别的“应用程序”或“服务”HTTP服务器。不过,这并不是真正的虚拟主机。

Nginx、Apache等是常见的。我觉得nginx很棒。宙斯( Zeus )或ZXTM是一款能够做到这一点并令人惊叹的商业产品。它被买下了,我想,所以我不确定它是否还能单独使用。

上面的nginx配置,如下所示:

代码语言:javascript
运行
复制
server {
    listen       80;
    server_name  api.publicname.com/myapione;

    location /myapione {
        proxy_pass        http://localhost:9000;
        proxy_set_header  X-Real-IP  $remote_addr;
    }

    location /myapitwo {
        proxy_pass        http://localhost:9001;
        proxy_set_header  X-Real-IP  $remote_addr;
    }
}

这种方法可以让您“缝合”在一起的服务,如您喜欢,并显示为一个外部调用者。例如,为static下的静态文件资产提供服务,并为在/下不匹配的所有内容提供面向前端的HTML服务器。

代码语言:javascript
运行
复制
    location /static/ {
        alias /app/myapp-pages/static;
    }

    location / {
        proxy_pass        http://localhost:8000;
        proxy_set_header  X-Real-IP  $remote_addr;
    }

在此之后:

代码语言:javascript
运行
复制
Public URL              -> maps to -> internal URL
http://api.publicname.com/myapione -> http://localhost:9000
http://api.publicname.com/myapitwo -> http://localhost:9001
http://api.publicname.com/static   -> local file assets
http://api.publicname.com/...      -> http://localhost:8000

这不做任何负载平衡,但您可以将其他服务放在某个主机上:用于负载平衡的端口,然后将nginx指向它。

ZXTM产品很有趣,因为它同时完成了上述代理和负载平衡。(我并不是最赞同它,只是我看到它在生产中使用过,而且令人印象深刻。)

请注意,Play虽然优秀,但更适合于呈现页面并提供更高级别的API,该API结合了对较低HTTP服务的调用。较低级别的HTTP服务可以使用像DropWizard这样的工具包编写,它只关注于提供API而不是页面。

票数 1
EN

Stack Overflow用户

发布于 2014-08-08 20:54:10

Play不管理虚拟主机概念。如果需要,您必须使用HTTP前端服务器: Apache、Nginx、Varnish

例如,在Nginx中:

代码语言:javascript
运行
复制
server {
  listen: 80
  server_name main.virtual.host alias.virtual.host;

  proxy_pass http://localhost:3000;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25211452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档