2016-04-24 58 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等)均不針對bottle應用,但實際上由wordpress及其PHP處理魔法。

這似乎應該是非常簡單的設置,但它很難谷歌簡單的解決這類問題,因爲每個人似乎膨脹他們的'教程'配置與大量的非必需品,混淆了一個初學者。

回答

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

注意,默認URI更改爲/blog/index.php這是希望所有你的WordPress文件的位置。

+0

這很好,幫助解決了我的問題,但我發現另一個問題是在配置錯誤的wordpress安裝中。我把我的wordpress文件移動到了一個子目錄,但顯然我需要重新安裝它。不過,如果沒有這種修復,它將無法正常工作。 –