thinkphp 的 nginx 配置踩坑
今天在用一個(gè)以 tp 為基礎(chǔ)的快速開發(fā)框架時(shí)遇到一些問題:
nginx 報(bào)錯(cuò)截圖
為了方便說明進(jìn)行手動(dòng)換行
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
//?處理時(shí)重寫或內(nèi)部重定向循環(huán) 2019/11/11?11:16:06?[error]?15164#15432:?*1?rewrite?or?internal?redirection?cycle?while?processing? ????"/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index/user/index.html",? ????client:?127.0.0.1,? ????server:?xxxxx,? ????request:?"GET?/index/user/index.html?HTTP/1.1",? ????host:?"xxxxx",? ????referrer:?"xxxxx"
錯(cuò)誤配置
參考 larvael 配置
server?{ ????. ????. ????. ????location?/?{ ????????try_files?$uri?$uri/?/index.php?$query_string; ????} ????. ????. ????. ????location?~?.php$?{ ????????fastcgi_pass127.0.0.1:9000; ????????fastcgi_index?index.php; ????????fastcgi_param?SCRIPT_FILENAME?$realpath_root$fastcgi_script_name; ????????include?fastcgi_params; ????} ????. ????. ????. }
發(fā)現(xiàn)所有路徑都一樣,都是首頁效果
初步判斷 nginx 重寫規(guī)則有問題
#?路徑?/?開頭之后都走這個(gè)匹配 #?如?/index?/index/user? location?/?{ ????#?$uri?本地有就返回,或者$uri/?本地有目錄就返回,或者走后面的重寫 ????#?本地是指在網(wǎng)站根目錄下,如?當(dāng)?$uri=index?就是看根目錄下面有?index?文件或者?index/?目錄 ????try_files?$uri?$uri/?/index.php?$query_string; }
開始報(bào)錯(cuò)
解決問題
網(wǎng)上查詢后 tp5 的配置應(yīng)為
????location?/?{ ????????try_files?$uri?$uri/?/index.php$uri; ????}
改后,發(fā)現(xiàn)問題沒解決;對(duì)比配置發(fā)現(xiàn)
??#?location?~?.php$?改成??location?~?.php(.*)$ ????location?~?.php(.*)$?{ ????????fastcgi_pass???127.0.0.1:9000; ????????fastcgi_index?index.php; ????????fastcgi_split_path_info??^((?U).+.php)(/?.+)$; ????????fastcgi_param??SCRIPT_FILENAME??$document_root$fastcgi_script_name; ????????fastcgi_param??PATH_INFO??$fastcgi_path_info; ????????fastcgi_param??PATH_TRANSLATED??$document_root$fastcgi_path_info; ????????include?fastcgi_params; ????}
解決,完整配置
server?{ ????listen???????80; ????server_name??xxxxxxx?; ????root??www; ????add_header?X-Frame-Options?"SAMEORIGIN"; ????add_header?X-XSS-Protection?"1;?mode=block"; ????add_header?X-Content-Type-Options?"nosniff"; ????charset?utf-8; ????index?index.html?index.htm?index.php; ????location?/?{ ????????try_files?$uri?$uri/?/index.php$uri; ????} ????location?=?/favicon.ico?{?access_log?off;?log_not_found?off;?} ????location?=?/robots.txt??{?access_log?off;?log_not_found?off;?} ????error_page?404?/index.php; ????location?~?.php(.*)$?{ ????????fastcgi_pass???127.0.0.1:9000; ????????fastcgi_index?index.php; ????????fastcgi_split_path_info??^((?U).+.php)(/?.+)$; ????????fastcgi_param??SCRIPT_FILENAME??$document_root$fastcgi_script_name; ????????fastcgi_param??PATH_INFO??$fastcgi_path_info; ????????fastcgi_param??PATH_TRANSLATED??$document_root$fastcgi_path_info; ????????include?fastcgi_params; ????} ????location?~?/.(?!well-known).*?{ ????????deny?all; ????} }
推薦學(xué)習(xí):thinkphp教程
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END