nginx 的 try_files

2018-10-18 10:08:45 阅读:14 编辑
 listen       80;
 server_name  91 admin.xmyunce.com;
 index index.html index.htm index.php;
 root /usr/share/nginx/HTML/91
 location / {try_files $uri $uri/ /index.php?$query_string;}

流程:

当用户请求 http://91 admin.xmyunce.com/admin 时,这里的 $uri=/admin , try_files 会到硬盘里尝试查找这个文件。 如果存在名为 $oot/admin (其中 $root 是 /usr/share/nginx/HTML/91) 的文件,就直接把这个文件的内容发送给用户。 如果不存在名为 admin 的文件,就转为 $uri/. 添加一个 / , 也就是查找名为 $root/admin/ 的目录。有则列出该目录。若还是找不到,就会 fall back 到 try_files 的最后一个选项 /index.php, 发起一个内部 "子请求", 也就是相当于 nginx 发起一个 HTTP 请求到 http://91 admin.xmyunce.com/index.php?/admin . 这个请求会被 location ~ .php$ {...} catch 住,也就是进入 FastCGI 的处理程序。而具体的 URI 及参数是在 REQUREST_URI 中传递给 FastCGI, 因为不受 URI 变化的影响