2016-04-24 3 views
1

Я прочитал умеренное количество документации для блоков местоположения, но у меня нет большого опыта работы с RegEx, поэтому я немного потерял, как снять то, что я пытаюсь сделать. Следующий Nginx конфигурация, вероятно, объяснить, что я хочу сделать лучше, чем я могу слово это:NGINX: основной блок местоположения переопределяет местоположение подкаталога?

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/ в настоящее время обслуживаются приложением бутылки через uwsgi, и поэтому все вещи под этим местом должны быть направлена ​​в бутылку приложение и обрабатывается там. Это работает нормально, как и ожидалось, однако я теряюсь в том, как добавить «исключение» в правило местоположения, так что example.com/blog и все под ним ../sub1/sub2 и т. Д. Не направлены на приложение для бутылок, а infact обрабатываются wordpress и его PHP магия.

Кажется, что это должно быть очень просто настроить, но это очень сложно для простых решений Google для таких проблем, поскольку все, кажется, раздувают конфигурации «учебника» с множеством несущественных вещей, которые путают начинающий.

ответ

2

Это может потребоваться некоторые хитрости, но вы, вероятно, следует использовать вложенное блок местоположение:

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; 
    } 
} 

Обратите внимание, что по умолчанию Ури изменяется на /blog/index.php, который, как мы надеемся, где все ваши WordPress файлы расположены.

+0

Это хорошо и помогло исправить мою проблему, хотя я обнаружил, что еще одна проблема связана с неправильной установкой wordpress. Я переместил файлы wordpress в подкаталог, но, видимо, мне также нужно было его снова установить. Однако это не сработало бы правильно. –