我想知道当你有不同的IP指向同一台服务器时,如何让Phoenix服务于同一服务器上运行的不同应用程序。
例如,您在相同的服务器和相同的端口(80)上运行AppA和appB Phoenix应用程序,如果请求来自IP X.X.X.X,您将提供appA服务。如果请求来自IP Y.Y.Y.Y,您将提供appB服务。 我尝试了一个简单的体验,我不能在同一个端口上运行两个应用程序(如果我不配置其他任何东西)。 我找到了我认为可以用于此目的的Plug.Adapters.Cowboy。根据文档,有一个选项允许我们定义绑定服务器的IP,例如:
Plug.Adapters.Cowboy.http MyPlug,[],ip:{188,250,167,106}
我的问题是:
1)放置此位置(在哪个文件/顺序中)?我想它应该是第一个插入endpoint.ex
文件...
2)应该使用的插件名称(MyPlug)是什么?
答案 0 :(得分:1)
另一种解决方案可能是使用Nginx来实现这一目标。例如,您可以在不同的端口上设置两个不同的凤凰应用程序,例如
#App 1
config :appname, AppName.Endpoint,
http: [port: 8888],
url: [host: "host"],
server: true,
root: ".",
cache_static_manifest: "priv/static/manifest.json"
#App 2
config :appname, AppName.Endpoint,
http: [port: 8889],
url: [host: "host"],
server: true,
root: ".",
cache_static_manifest: "priv/static/manifest.json"
然后你可以简单地使用Http_access_module来做这样的事情:
server {
if ($remote_addr = 1.2.3.4) {
rewrite ^ http://www.website.com/noscrape.htm;
}
...
}