2017-08-25 3 views
1

Ich habe eine Website, die eine App mit anderen Anwendungen ist. In der Haupt-App lade ich die anderen Apps mit iframes.NGINX-Server-Konfiguration für statische Anwendungen

Die Hauptanwendung ist am Domänenstamm diente: http://example.com Die anderen Anwendungen unter dem/Pfad serviert apps:

Auch die Apps in entwickelten Polymer so gibt es clientseitige Navigation. Ich vergewissere mich, dass der Pfad/apps nicht auf der Client-Seite verwendet wird, um den NGINX-Server richtig zu treffen, aber es bedeutet auch, dass für URL wie http://example.com/view1 es auf die index.html der Haupt-App umleiten sollte. Und für URL wie http://example.com/apps/app-b/view1 sollte es auf die index.html von app-b umleiten.

Ich versuche NGINX zu konfigurieren, diese statischen Anwendungen zu bedienen.

server { 
     listen 80; 
     server_name example.com; 

     root /var/www/example.com/main-app; 
     index index.html; 

     try_files $uri $uri/index.html /index.html; 

     location ~ /apps/([a-z-]+) { 
       alias /var/www/example.com/apps/$1; 
     } 
} 

Mit der obigen Konfiguration habe ich den Haupt-App mit der richtigen Umleitung auf die index.html für den/view1 Pfad zum Beispiel arbeiten.

Aber ich habe einen 403 verbotenen Fehler für die Unter-Apps.

Verzeichnisindex von "/var/www/example.com/apps/app-b" verboten ist, Client: 127.0.0.1, Server: example.com, Anfrage: „GET/apps/app- b/

ich habe versucht, andere Konfigurationen ohne Erfolg (unendliche Umleitung führt zu /index.html/index.html/index.html ...).

ich bin sicher, über das Dateisystem Berechtigungen Alle Verzeichnisse sind 755 und Dateien sind 644.

Ich weiß nicht, warum es t ist rying, um einen Verzeichnisindex zu erstellen. Jede Hilfe wird geschätzt.

Antwort

0

Wenn Sie alias mit einem regulären Ausdruck location verwenden, müssen Sie den gesamten Pfad zu der Datei erstellen. Momentan erfassen Sie nur das zweite Pfadelement.

Nachdem Sie das gesagt haben, müssen Sie nicht wirklich eine alias hier verwenden, wie die root Direktive stattdessen verwendet werden kann.

location /apps/ { 
    root /var/www/example.com; 
} 

Weitere Informationen finden Sie unter this document.

+0

Es funktionierte nicht, da der Standort/die Apps nicht mit dem Ordnernamen im Dateisystem übereinstimmte. Ich habe etwas wie /var/www/example.com/other-apps. Für den Moment habe ich die anderen Apps geändert, damit es mit dem funktioniert, was Sie vorgeschlagen haben (was natürlich Sinn macht). – florian