2014-02-17 13 views
6

Ich möchte Nginx zu Server/Assets-Ordner für mein Spiel verwenden! Anwendung. Ich möchte:Nginx-Konfiguration für PlayFramework statische Dateien

  • Proxy die meisten Dateien zu spielen!
  • Punkt/Vermögen in einen lokalen Ordner

ich die folgende Konfiguration verwende, aber es funktioniert nicht:

worker_processes 1; 

error_log logs/error.log; 

events { 
    worker_connections 1024; 
} 

http { 
    include  mime.types; 
    default_type application/octet-stream; 

    upstream play_app { 
     server 0.0.0.0:9000; 
    } 

    server { 
     listen  80; 

     location/{ 
      proxy_pass http://play_app; 
     } 
    } 
} 

Auch, wenn ich diese Arbeit bekommen, kann ich schreiben Nginx/Assets Ordner von Play über Play.getFile("/assets/images")?

Antwort

6

das Spiel App Unter der Annahme, als Nginx auf der gleichen Maschine laufen - und lauscht auf Port 9000

upstream play_app { 
    server 127.0.0.1:9000; 
} 

server { 
    listen 80; 
    location/{ 
    proxy_pass http://play_app; 
    } 
} 

Dieser leitet alle Anfragen von Port 80 über nginx - zum Play-App auf der gleichen Maschine auf Port 9000.

Wenn Sie möchten, dass NGinx Ihre lokalen Assets bedient - fügen Sie einen zweiten Standort hinzu, bevor Sie alle Regeln einhalten.

server { 
    listen 80; 
    location /assets { 
    root /var/www; 
    } 
    location/{ 
    proxy_pass http://play_app; 
    } 
} 
+0

Wenn Sie ein lokales Asset-Verzeichnis hinzufügen möchten - fügen Sie einfach einen anderen Speicherort zum Server hinzu – BillyBigPotatoes

+0

Danke, das funktioniert hat. Aber aus irgendeinem Grund sucht der Server in dieser Konfiguration nach var/www/assets/assets/test.txt. Wenn ich also den Stamm in/var/www ändere, funktioniert es, aber ich möchte den relativen Pfad nicht. Weißt du, was fehlt? –

+2

So funktioniert das: Rewrite ^/Assets (. *)/$ 1 Pause; –