1、try_files 指令 openResty 对捕获状态码无效。
我输入的 /index.php/hello/world
,openResty
200 返回了 /index.php/hello/world-/index.php/hello/world
。nginx
按我预期的返回了 404
。为什么?
2、$fastcgi_script_name
的差异
nginx
是 /index.php
openResty
是 /index.php/hello/world
还有就是 bt面板
自带的 pathinfo
解析方式
set $real_script_name $fastcgi_script_name;
# nginx 的 $fastcgi_script_name 只是入口脚本 /index.php
# openResty 的 $fastcgi_script_name 是 $uri /index.php/hello/world
if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
这处理模式只适用 openResty
的 $fastcgi_script_name
,nginx
的 $fastcgi_script_name
并不会携带 /hello/world
路径信息,还是得使用 fastcgi_split_pathinfo
指令才行,这是什么鬼?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…