2016-06-21 3 views
1

Ich würde gerne wissen, wie Phoenix verschiedene Apps auf dem gleichen Server ausführen kann, wenn verschiedene IPs auf denselben Server verweisen.So konfigurieren Sie Phoenix, um verschiedene Apps basierend auf verschiedenen IPs zu bedienen

Zum Beispiel haben Sie AppA und AppB Phoenix-Anwendungen auf dem gleichen Server und den gleichen Port (80) und wenn die Anfrage von IP X.X.X.X kommt Sie appA. Wenn die Anfrage von IP Y.Y.Y.Y kommt, werden Sie appB. Ich habe versucht, eine einfache Erfahrung und ich kann nicht zwei Anwendungen auf dem gleichen Port ausgeführt (wenn ich nichts anderes konfigurieren). Ich habe den Plug.Adapters.Cowboy gefunden, von dem ich denke, dass er für diesen Zweck verwendet werden könnte. Laut Dokumentation gibt es eine Option, die es uns ermöglicht, die IP zu definieren, an die der Server gebunden werden soll, zum Beispiel:

Plug.Adapters.Cowboy.http MyPlug, [], ip: {188, 250, 167, 106}

Meine Fragen sind:

1), wobei dies zu platzieren (in der Datei/Bestellung)? Ich nehme an, es sollte der erste Plug innerhalb endpoint.ex Datei sein ...

2) Was ist der Plug-Name (MyPlug), der verwendet werden sollte?

Antwort

1

Eine andere Lösung könnte die Verwendung von Nginx sein, um dies zu erreichen. Zum Beispiel könnten Sie Ihre zwei verschiedenen Phoenix-Apps auf verschiedenen Ports einrichten, z.

#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" 

Dann könnten Sie einfach den Http_access_module verwenden, so etwas zu tun:

server { 
    if ($remote_addr = 1.2.3.4) { 
     rewrite^http://www.website.com/noscrape.htm; 
    } 
    ... 
} 

Diese answer hier geht mehr ins Detail und this gist, zeigt, wie nginx verwenden, um verschiedene Häfen zu umleiten.

+0

Vielen Dank. Das ist in der Tat eine Lösung. Trotzdem würde ich gerne eine Lösung ohne nginx und im Phoenix Framework finden. –

+0

@PauloJaneiro Schön genug - also versuchen Sie, dies nur durch Phoenix zu tun? –

+0

Ja. Ich denke, wenn wir eine native Lösung haben, sollten wir sie bevorzugen. Ich habe meine Frage nur mit einer Vermutung bearbeitet –

Verwandte Themen