Scala / Play / Nginx: routing delle risorse statiche
-
20-12-2019 - |
Domanda
Ho la mia app Play in esecuzione:
http://localhost:9000
.
nginx è proxy che lo passa a questo URL:
http://localhost/Demo/
.
Ho un problema con le risorse statiche però. Ad esempio, questo asset in template HTML
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
.
sta andando a
http://localhost/assets/stylesheets/main.css
.
e ovviamente si traduce in non trovato. Se lo cambio su questo (Aggiungi /Demo
davanti all'URL):
<link rel="stylesheet" media="screen" href="/Demo@routes.Assets.at("stylesheets/main.css")">
.
Verrà ora correttamente a questo URL:
http://localhost/Demo/assets/stylesheets/main.css
.
La mia domanda è: come posso aggiungere questo /Demo
a tutti i miei beni statici senza cadendolo duro nei miei modelli? Preferisco risolvere questo utilizzando il routing e il limite di riproduzione modificati a Nginx Conf.
Ho provato ad aggiungere un prefisso URL in application.conf
come questo
application.context="/Demo"
.
Ma ciò ha colpito tutti gli URL non solo quelli statici, quindi non una soluzione. Qualche idea?
La mia pila: Play Framework 2.2.1 / Scala 2.10.3 / Java 8 64 bit / Nginx 1.4.3 / Ubuntu 13.10 64 bit
package core
import controllers.routes
object Assets {
def at(path: String): String = {
"/Demo" + routes.Assets.at(path)
}
}
. Soluzione
Basta overwitare il percorso utilizzando la propria implementazione di attività (cioè nel pacchetto utils
):
package utils;
import controllers.routes;
public class MyAssets {
public static String at(String path){
return "/Demo"+ routes.Assets.at(path).toString();
}
}
.
in Modelli:
<img src='@utils.MyAssets.at("images/logo.png")' alt="">
.
Dall'altra parte, il progetto di destinazione funziona anche nella sottodirectory?In caso contrario, è solo un sottodominio più facile da usare, è possibile anche con localhost, basta configurare il tuo nginx per quel progetto da utilizzare IE.: http://demo.loc
invece od http://localhost/Demo
e aggiungi questo 'dominio' al tuo file hosts