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