2016-04-24 17 views
1

Ich habe eine moderate Menge der Dokumentation für Standortblöcke gelesen, aber ich habe nicht viel Erfahrung mit RegEx, so bin ich ein bisschen verloren, wie ich abziehen kann, was ich versuche zu tun. Die folgende nginx Config wird wahrscheinlich erklären, was ich besser machen will als kann ich Wort es:NGINX: Der Hauptortblock überschreibt den Speicherort des Unterverzeichnisses?

server { 
     server_name example.com www.example.com; 
     root /var/www/; 
     index index.php; 


     location /blog/ { 
       try_files $uri $uri/ /index.php?$args; 
     } 

     location ~ \.php$ { 
       try_files $uri =404; 
       include fastcgi_params; 
       fastcgi_pass unix:/var/run/php5-fpm.sock; 
     } 

     location/{ 
       try_files $uri @uwsgi; 
     } 

     location @uwsgi { 
       include uwsgi_params; 
       uwsgi_pass unix:/tmp/uwsgi.sock; 
     } 


} 

example.com/ wird durch eine Flasche App durch uwsgi serviert, und so alle Dinge unter dieser Adresse sollte auf die Flasche geleitet werden App und gehandhabt dort. Dies funktioniert wie erwartet, aber ich bin verloren, wie eine 'Ausnahme' zu der Standortregel hinzufügen, so dass example.com/blog, und alles unter ihm ../sub1/sub2 etc. nicht an die Flaschen-App gerichtet sind, sondern tatsächlich von Wordpress und seine PHP behandelt Zauber.

Das scheint so, als sollte es sehr einfach einzurichten sein, aber es erweist sich als sehr schwierig, einfache Lösungen für diese Art von Problemen zu googeln, da jeder seine "Tutorial" -Konfigurationen mit Tonnen von unwichtigen Dingen zu verwirren scheint Anfänger.

Antwort

2

Dies kann einige Optimierungen benötigen, aber Sie sollten wahrscheinlich eine verschachtelte Position Block verwenden:

server { 
    server_name example.com www.example.com; 
    root /var/www; 
    index index.php; 

    location /blog/ { 
     try_files $uri $uri/ /blog/index.php?$args; 

     location ~ \.php$ { 
      try_files $uri =404; 
      include fastcgi_params; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
     } 
    } 

    location/{ 
     try_files $uri @uwsgi; 
    } 

    location @uwsgi { 
     include uwsgi_params; 
     uwsgi_pass unix:/tmp/uwsgi.sock; 
    } 
} 

Beachten Sie, dass die Standard-URI zu /blog/index.php geändert wird, die hoffentlich ist, wo alle Ihre Wordpress-Dateien befinden.

+0

Das ist gut und half mein Problem zu beheben, obwohl ich ein anderes Problem in einer falsch konfigurierten Wordpress-Installation entdeckt hatte. Ich hatte meine Wordpress-Dateien in ein Unterverzeichnis verschoben, aber anscheinend musste ich es auch neu installieren. Ohne diesen Fix hätte es jedoch nicht richtig funktioniert. –