2016-10-12 2 views
1

Ich habe einen Haken alle Server-Block wie folgt aus:Nginx: Nur Server-Block verwenden, wenn Standort übereinstimmt

server { 
    listen  80 default_server; 
    server_name _; 

    location /blog{ 
     # pass request to ghost 
    } 
    location /{ 
     # pass request to custom node app 
    } 
} 

Es geht auf den benutzerdefinierten Knoten App, die die angeforderte Domäne, Protokoll überprüft, und der Pfad, und Fragen eine einzige 301 Weiterleitung, falls erforderlich; Wir tun dies, um 301 Weiterleitungen zu SEO-Zwecken zu minimieren.

Ich brauche auch mein Geist Blog nur um https://www.exmaple.com/blog serviert werden. Ich habe den folgenden Block:

server { 
    listen  80; 
    server_name example.com; 

    location /blog { 
     return 301 https://www.example.com$request_uri; 
    } 
} 

so dass Anfragen an die nackte Domain würde weitergeleitet. Aber jetzt Anfragen an example.com die Standard-Nginx index.html Seite zurückgeben. Wie verhindere ich das? Ich möchte vermeiden, if zu verwenden.

+1

So gibt es zwei verschiedene/Blog Stellen Sie umleiten? Warum nicht den "all catch all location" -Punkt zu Ihrem example.com-Serverblock hinzufügen? –

+0

Ich brauche immer noch alle Nicht-/Blog-Anfragen auf der nackten Domain, um meine benutzerdefinierte Knoten-App aufzurufen. Das Problem besteht darin, dass ein zweiter Serverblock dies verhindert. –

Antwort

2

Sie benötigen ein Catch-All-in bloßem Domain-Server blockieren, die Routen zu den Knoten Anwendung haben

server { 
    listen  80; 
    server_name example.com; 

    location /blog { 
     return 301 https://www.example.com$request_uri; 
    } 

    location /{ 
     # pass request to custom node app 
    } 
} 
+0

Also nur den ganzen 'location /' Block kopieren? –

+0

Ja, das Problem ist, dass die leere Domain nur angibt, was zu tun ist, wenn der Standort/Blog ist. Wenn du also den Catchall einstellst, sollte es dir gut gehen. – miah

Verwandte Themen