thinkphp5部署於Linux中nginx多網站解決方案____Linux

來源:互聯網
上載者:User

問題簡述:thinkphp5怎麼在url訪問中去掉public。

實驗環境:
Linux、nginx、mysql、php(lnmp一鍵整合1.4測試版,更多資訊lnmp.org)
本文兼顧的問題:
1.安全的配置(同一vps多網站)
2.友好的網站入口

部署問題重述:
由於thinkphp5經過重構,和thinkphp3.2有很大的不同,其中之前的入口檔案index.php由/index.php改為/public/index.php,
那麼問題來了:
1.如果按lnmpIntegration Environment提供的方法(lnmp vhost add)添加虛擬網站,訪問網站就要加個二級目錄,如
http://xxx.com/public

所以為了可以讓訪問連結變得更加友好(即http://xxx.com),可以修改/usr/local/nginx/conf/vhost/xxx.com.conf(下稱“專屬配置”)

 root /home/wwwroot/xxx.com/; 

改為:

 root /home/wwwroot/xxx.com/public; 

那麼問題來了,由於lnmp環境考慮到虛擬網站各自的訪問目錄許可權問題,於是在/usr/local/nginx/conf/fastcgi.conf
裡配置了

 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 

那麼每個網站的存取權限就限制在各自的document_root裡了,
於是,我們修改的root(root /home/wwwroot/xxx.com/public;)就把許可權限制在public目錄之後,
軟體架構根目錄下的application等都無法訪問了,那麼此時我們要解決的問題是:
2.既要保持root /home/wwwroot/xxx.com/public;,又要讓虛擬網站有/home/wwwroot/xxx.com目錄的存取權限
那麼可以修改/usr/local/nginx/conf/fastcgi.conf設定檔:

 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 

改為:

 fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/xxx.com/:/tmp/:/proc/"; 

但問題來了,/usr/local/nginx/conf/fastcgi.conf是公用設定檔,採用這種寫死的方式會導致其他網站不可用,
為了兼顧其他虛擬網站,if_not_empty派上用場了,
修改方法為:
不改變/usr/local/nginx/conf/fastcgi.conf設定檔裡的原配置,而在

 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 

之後添加

 fastcgi_param PHP_ADMIN_VALUE $basedir if_not_empty;#注意nginx要在1.1.11版本之後 

$basedir變數就可以在/usr/local/nginx/conf/vhost/xxx.com.conf設定檔裡的include enable-php.conf前賦值:

 set $basedir "open_basedir=/home/wwwroot/dev.yunshare.net/:/tmp/:/proc/"; 

優點:這樣既滿足了thinkphp5的部署要求,又不影響其他一般網站的使用。
缺點:如果$basedir沒有賦值(至少一個專屬配置有賦值),nginx -t無法通過。

注意rewrite規則:
最後獻上thinkphp的rewrite規則:
這種寫法3.2是可以的,但在這裡是不可以的,否則經測試pathinfo為空白

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

應該改為:

 location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$1 last; } } 

好了,一篇關於thinkphp5的rewrite寫到這,歡迎多多交流

總結: lnmp環境 thinkphp架構不改變目錄結構的情況下配置rewrite規則 Linux許可權,安全問題

參考資料:
http://www.kancloud.cn/manual/thinkphp5/207415

http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html


轉載請註明:愛遊思 » thinkphp5部署於Linux中nginx多網站解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.