info index.php,真 · nginx配置php文件解析(PATH_INFO支持与index.php隐藏)
nginx默认配置文件中对php的支持是这样的:# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html; # html改成项目路径
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
nginx对php的处理原则是将匹配到的以.php结尾的文件转交给FastCGI服务进程(FastCGI是一种协议,php-fpm是实现了FastCGI协议的程序)。
但只启用这个配置是不够的,首先,他无法处理PATH_INFO信息。即在php文件中使用全局变量$_SERVER['PATH_INFO']只能得到空值。另外,他只能处理http://domain/index.php/controller/action?query_string这样的url,无法隐藏index.php。对于现在的web框架来说,将index.php文件作为php的单一入口,并在url上隐藏index.php是最基本的要求。有些框架还可能需要用到PATH_INFO来实现路由转发。
网上有好多资料讲怎么配置nginx来实现PATH_INFO支持与index.php隐藏的,但试了好多都是不完善的,要么支持了$_SERVER['PATH_INFO']但不支持隐藏index.php,要么是无法获取$_SERVER['QUERY_STRING']。就连我去年一直用到现在的配置其实也是有问题的。
今天试了好久,总算确定了一个最合理的配置:server {
listen 80;
server_name your_domain;
location / {
root your_code_path;
index index.html index.htm index.php;
# 无法找到的文件路径交给index.php处理
# $args变量表示查询字符串,将其传递给index.php,否则index.php无法获取QUERY_STRING
try_files $uri $uri/ /index.php$is_args$args;
}
# 匹配.php文件
location ~ [^/]\.php(/|$) {
# 从请求路径中匹配出$fastcgi_script_name与$fastcgi_path_info两个变量
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
# 如果.php文件不存在,返回404
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
root your_code_path;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
当然你也可以将后面两句fastcig_param写到/etc/nginx/fastcig_params文件中。
参考:
@2020.05
DigitalOcean 出了一个可视化的 nginx 配置工具 nginxconfig.io,还是很好用的。
info index.php,真 · nginx配置php文件解析(PATH_INFO支持与index.php隐藏)相关推荐
- Nginx配置示例文件
Nginx配置示例文件 nginx.conf worker_processes 8;events {worker_connections 1024; }http {include mime.types ...
- nginx html解析插件,nginx配置信息的解析流程
nginx配置信息的解析流程 2011年9月9日 1,744 次浏览 请关注最新修正合订: 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来.顺序也不记得了,看到那个就发那个吧,最近都会发 ...
- 解决因nginx配置导致文件上传失败的问题 The filed file exceeds its maximum permitted size of 1048576 bytes
解决因nginx配置问题导致文件上传失败的问题 1.问题背景 2.问题截图 3.问题分析 4.问题解决(修改nginx的配置) 5.解决之后的"后遗症"(截图) 6.分析并解决&q ...
- nginx配置下载文件
nginx安装及下载文件 一.安装nginx 安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl open ...
- nginx配置简单文件预览
1.目的 预览图片.pdf.txt 2.配置 #搭建文件预览 server { listen 8888; server_name preview.xxx.c ...
- Nginx 配置实现web解析php代码 过程记录
[Nginx配置] Nginx本身不支持对php的解析,需要将php代码转发到php-fpm 进程管理器来交给php解析器解析代码. 重要的配置注意注释位置: user www www; # 用户 用 ...
- nginx无法访问index.html,ThinkPHP5 + nginx配置(index.php无法访问404)
下载ThinkPHP5后,在nginx下默认无法访问index.php, 假如文件系统路径是/home/www/ 创建项目php5后欢迎页访问路径是: http://xxxxx/home/www/ph ...
- html页面配置xml文件路径,web.xml与index.html
一.部署描述符 1.每个web应用程序的配置信息都保存在各自所映射的文件系统目录下的Web-INF/web.xml文件中.web.xml文件用于描述web应用程序的部署信息,因此, web.xml文件 ...
- nginx配置静态文件过期时间
1. 编辑虚拟主机配置文件/usr/local/nginx/conf/vhosts/huangzhenping.conf 说明:采用location方式 1 2 3 4 5 6 7 8 9 10 l ...
- Windows使用Nginx配置本地文件代理(查看本地资源或图片)
一.前言 我们在实际开发中会经常遇到把图片上传到服务器上,比如七牛云.阿里云.腾讯云一些提供服务的商家.但是我们的图片隐私也会泄露,所以我们还是上传到本地,使用Nginx来代理到我们本地图片.这样就可 ...
最新文章
- Typedef用法学习
- [30期] 第一个项目
- Keras方法进行词嵌入
- [密码学] 基础知识
- 分析函数RANK的使用
- hdu4533 威威猫系列故事——晒被子
- MATLAB R2020a新鲜出炉,我来替各位尝尝鲜!
- NAND FLASH/NOR FLASH/EMMC等存储器的比较和区别
- 真正零基础Python入门:手把手教你从变量和赋值语句学起
- (97)Verilog HDL:秒灯设计
- 信息化与工业化融合的内涵、层次和方向
- 舍弃高通?谷歌推 Tensor 自研芯片
- VB禁止使用 Alt-Tab 或 Ctrl-Alt-Del
- Explorer.exe报错故障解决一例
- C++ 时间差的计算方式
- 小米笔记本PRO BIOS忘记密码后重置教程
- 企业微信文件会过期吗?
- html5京东页面布局,京东移动端页面布局(一)
- Go语言 gorutine和channel协同工作经典应用案例 (Golang经典编程案例)
- 安卓 11 文件储存
热门文章
- Spring Aop技术原理分析
- 2019年最新资料!共7T!
- 关于rstudio的一些快捷键
- webpack4打包vue前端多页面项目
- 线性表的总结:顺序存储线性表的初始化,创建,插入,删除,清空,销毁等操作...
- [理解ASP.NET Core框架]一个五十行的控制台Web
- cordova android项目自定义插件及使用(二)
- 移动开发不能不知道的事-meta
- 如何区分同一Class的不同实例对象
- [编写高质量代码:改善java程序的151个建议]建议43 避免对象浅拷贝; 建议44:推荐使用序列化实现对象的深拷贝...