2016-06-09 7 views
0

Ich versuche, eine jekyll statische Seite mit Nginx zu hosten. Ich möchte, dass die Site von einem Unterverzeichnis in der URL bedient wird, z. https://example.com/jekyll-site/. Die Quelldateien befinden sich in einem Git Repo, der in den Ordner /srv/website/html auf dem Server geklont ist. Wenn ich jekyll build ausführen, erstellt es die Website-Datei in /srv/website/html/_site. Es gibt eine index.html Datei in _site, die ich für eine Index-Anweisung verwenden möchte.nginx - Wie liefere ich eine Indexdatei für einen Unterordner?

Hier ist die Config ich bisher habe:

server { 

    # ... 

    location/{ 
     # proxy_pass'es to another process 
    } 

    location = /jekyll-site { 
     return 302 https://$host$request_uri/; 
    } 

    location /jekyll-site/ { 
     root  /srv/website/html/_site; 
     index  index.html; 
     rewrite_log on; 
     rewrite  /jekyll-site/(.*) /$1 break; 
     try_files $uri /index.html; 
    } 
} 

Nun, wenn ich an https://example.com/jekyll-site/index.html meinem Browser zeigen, dann dient es der Indexdatei korrekt. Wenn ich zu irgendeinem Beitrag auf der Website gehe, wird es korrekt bedient. Alle internen Links von einem Post zu einem anderen funktionieren ordnungsgemäß. Wenn ich jedoch zu https://example.com/jekyll-site/ gehe, erhalte ich eine 404 Seite anstelle der Indexseite.

Was ist falsch an meiner Konfiguration? Wie konfiguriere ich Nginx, um die Dateien aus diesem Ordner auch mit einer korrekten index Direktive zu liefern?

+0

Vielleicht können Sie das 'rewrite' entfernen und den Versuch auf' try_files $ uri $ uri/= 404; 'setzen –

Antwort

0

Ich konnte es durch Hinzufügen eines zusätzlichen Standort Block mit einer Umleitung zum Laufen bringen, etwa so:

server { 

    # ... 

    location/{ 
     # proxy_pass'es to another process 
    } 

    location = /jekyll-site { 
     return 302 https://$host$request_uri/; 
    } 

    location = /jekyll-site/ { 
     return 302 https://$host${request_uri}index.html; 
    } 

    location /jekyll-site/ { 
     root  /srv/website/html/_site; 
     index  index.html; 
     rewrite  ^/jekyll-site/(.*)$ /$1 break; 
    } 
} 

Es https://example.com/jekyll-site/index.html in der Adressleiste des Browsers, aber zumindest funktioniert es bringt.

Verwandte Themen