2017-01-26 6 views
1

Ich habe die folgenden HTML-Seiten (Prahlerei-ui-Dashboards) in der gleichen Maschine (lets in der Cloud sagen)konfigurieren Nginx den Inhalt des relativen Pfad zu bekommen

I somewhere_in_the_cloud zeigen vermeiden wollen und zeigen eine andere uRL (swaggerui/Züge und swaggerui/Ebenen), weshalb ich einen Nginx verwenden.

Ich kann die swagger-ui.html sehen, aber der Inhalt dieser Seite, die mit Verwandten Pfaden geladen werden soll (css, js, ...) wird nicht geladen, weil das Nginx in der Wurzel sucht. Also, Wie sollte meine nginx.conf-Datei zu sehen, swagger-ui.html Website, die funktionieren sollte und alle statischen Inhalt haben?

Beispiel für etwas, das ich nicht sehen kann, hat es einen relativen Pfad:

<link rel="icon" type="image/png" href="webjars/springfox-swagger-ui/images/favicon-32x32.png" sizes="32x32"> 

Das ist mein nginx.conf und was habe ich versucht, ohne Erfolg:

worker_processes 1; 

events { 
    worker_connections 1024; 
} 

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

    sendfile  on; 

    keepalive_timeout 65; 

    server { 
     listen  80; 
     server_name localhost; 

     location/{ 
      root html; 
      index index.html index.htm; 
     } 

     location /swaggerui/trains { 
      proxy_pass http://somewhere_in_the_cloud:8083/swagger-ui.html; 
     } 

     location /swaggerui/planes { 
      proxy_pass http://somewhere_in_the_cloud:8087/swagger-ui.html; 
     } 

     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 
    } 

} 
+0

Könnten Sie ein abschließendes '/' erzwingen, so dass das relative Verzeichnis korrekt ist? –

+0

@RichardSmith Wie könnte ich das tun? (Entschuldigung, ich bin neu mit Nginx) –

Antwort

0

Die Browser-Formulare relative Pfadverknüpfungen durch Suchen nach der letzten / im aktuellen URI, so dass die relative Ressourcendatei folgendermaßen aussehen würde:

/swaggerui/trains -> /swaggerui/style.css 
/swaggerui/planes -> /swaggerui/style.css 

Wenn Sie eine Hinter / auf Ihre erste URIs erzwingen, werden die Ergebnisse:

/swaggerui/trains/ -> /swaggerui/trains/style.css 
/swaggerui/planes/ -> /swaggerui/planes/style.css 

, die die verschiedenen Ressourcendateien finden.

Es gibt eine Reihe von Möglichkeiten, dies zu erzwingen. Ein Beispiel wäre:

location /swaggerui/ { 
    rewrite ^(.*[^/])$ $1/ permanent; 
    return 404; 
} 
location /swaggerui/trains/ { 
    proxy_pass ...; 
} 
location /swaggerui/planes/ { 
    proxy_pass ...; 
} 

Der erste Standort Block fügt eine Hinter / wenn man fehlt. Die folgenden zwei Blöcke entsprechen nur URIs, die das dritte / enthalten.