Web services 我可以(DNS)将一个子域映射到多个Play Framework入口点吗
下面的情况可能吗?警告:我只理解DNS的基本形式 我们有一个API(使用构建),我们希望通过一个地址,比如 但是,我们希望将此API分为两个播放项目(例如myapione和myapitwo)。 然后仅使用一个域,但使用两个单独的“子文件夹”访问它们 所以我一直在寻找映射的可能性,比如说 到 。。。和另一个应用程序 到 我们正在寻找的最终结果如下。 我们会接到看起来像 也是Web services 我可以(DNS)将一个子域映射到多个Play Framework入口点吗,web-services,networking,playframework,dns,Web Services,Networking,Playframework,Dns,下面的情况可能吗?警告:我只理解DNS的基本形式 我们有一个API(使用构建),我们希望通过一个地址,比如 但是,我们希望将此API分为两个播放项目(例如myapione和myapitwo)。 然后仅使用一个域,但使用两个单独的“子文件夹”访问它们 所以我一直在寻找映射的可能性,比如说 到 。。。和另一个应用程序 到 我们正在寻找的最终结果如下。 我们会接到看起来像 也是 也是游戏不管理虚拟主机概念。如果需要,您必须使用HTTP前端服务器:Apache、Nginx和Varnish 例如,在Ngi
也是游戏不管理虚拟主机概念。如果需要,您必须使用HTTP前端服务器:Apache、Nginx和Varnish 例如,在Nginx中:
server {
listen: 80
server_name main.virtual.host alias.virtual.host;
proxy_pass http://localhost:3000;
}
目标是:
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很棒。一个商业产品,它做到了这一点,是惊人的是宙斯或ZXTM。我想它已经被买断了,所以我不确定它是否还可以单独使用
nginx的上述配置,类似于:
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服务器,请执行以下操作:
location /static/ {
alias /app/myapp-pages/static;
}
location / {
proxy_pass http://localhost:8000;
proxy_set_header X-Real-IP $remote_addr;
}
有了这一点:
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而不是页面。我不这么认为,但您可以始终在两个play应用程序前面放置一些代理(Apache/nginx),并执行正确的重定向