本文主要給大家介紹了關(guān)于Nginx下ThinkPHP5的配置方法,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō),來(lái)一起看看詳細(xì)的介紹:
url里public目錄的隱藏
出于安全的考慮,TP5的入口文件改成放在public下了,因?yàn)檫@樣的話能防止被惡意用戶訪問到“/thinkphp/”、“/vendor/”等等這些目錄下的文件。所以當(dāng)你以之前的習(xí)慣將網(wǎng)站documentroot配置為項(xiàng)目根目錄的時(shí)候就會(huì)需要在url后面加上/public/來(lái)訪問。當(dāng)然可能也會(huì)有童鞋把入口文件放回到根目錄下,然后還是以之前3.x版那樣的形式訪問了。
但是很顯然,這么做并不是那么的科學(xué)。
假設(shè)項(xiàng)目目錄為“/web/wwwroot/augsky.com”,那么我們?cè)诰W(wǎng)站的nginx配置文件里面將root配置為:
root /web/wwwroot/augsky.com/public;
但是一定要記得將open_basedir設(shè)置為上一級(jí)項(xiàng)目的根目錄下,不然應(yīng)用會(huì)沒有權(quán)限調(diào)用除public目錄下的其他文件,網(wǎng)站會(huì)報(bào)500無(wú)法訪問。(open_basedir的配置默認(rèn)在php.ini里面,但如果是多個(gè)虛擬機(jī)環(huán)境的話有可能會(huì)在各個(gè)網(wǎng)站的user.ini文件里,這個(gè)要根據(jù)自己的實(shí)際情況來(lái)。)具體配置如下:
open_basedir=/web/wwwroot/augsky.com:/tmp/:/proc/
隱藏入口文件index.php:
location / { try_files $uri $uri/ /index.php?s=$uri&$args; #如果請(qǐng)求不是文件或目錄,則將uri交給index.php處理,同時(shí)保留參數(shù) }說(shuō)一下try_files:
try_files語(yǔ)法: try_files file1 [file2 ... filen] uri OR try_files file1 [file2 ... filen] =code默認(rèn)值: 無(wú)作用域: server location
try_files支持多個(gè)參數(shù),每個(gè)參數(shù)代表一個(gè)文件,系統(tǒng)將按順序檢查這些文件是否存在,存在就直接執(zhí)行,斜線“/”結(jié)尾代表目錄,若都不存在,則會(huì)重定向到最后一個(gè)參數(shù)指向的文件或者返回指定的http狀態(tài)碼。
pathinfo配置
在配置文件里面增加這一段(如果你是lnmp一鍵包用戶,請(qǐng)略過這一段往下翻):
location ~ [^/]/.php(/|$) { set $path_info ""; #定義變量 $real_script_name,用于存放真實(shí)地址 set $real_script_name $fastcgi_script_name; #如果地址與引號(hào)內(nèi)的正則表達(dá)式匹配 if ($fastcgi_script_name ~ "^(.+?/.php)(/.+)$") { #將文件地址賦值給變量 $real_script_name set $real_script_name $1; #將文件地址后的參數(shù)賦值給變量 $path_info set $path_info $2; } #配置fastcgi的一些參數(shù) fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; include fastcgi_params;}上面需要說(shuō)明的是fastcgi_pass的設(shè)置,這個(gè)得根據(jù)你實(shí)際的php版本和安裝目錄來(lái)設(shè)定。
新聞熱點(diǎn)
疑難解答
圖片精選