`
isno
  • 浏览: 15311 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

让nginx 支持PATH_INFO

    博客分类:
  • PHP
阅读更多
很多PHP框架默认使用PHP的PATH_INFO 来进行URL重写
当用Nginx作为http服务器的时候,就出现问题了,愿意是Nginx为定义PATH_INFO这个变量,我们想要使用PHP框架的PATH_INFO重写时候,必须定义这个变量

代码比较简单
 location ~ \.php($|/) {
		root	   /www/test;

		set $script     $uri;
		set $path_info  "";

		if ($uri ~ "^(.+?\.php)(/.*)$") {
		    set $script     $1;
		    set $path_info  $2;
		}

		fastcgi_index	index.php;
		fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param   PATH_INFO       $path_info;
		fastcgi_pass    unix:/tmp/php-fpm.sock;
		include	fastcgi_params;
    	}



这样PHP框架就可以使用PATH_INFO 重写了
分享到:
评论
5 楼 wpeng1123 2011-04-10  
仍然返回404  不行啊
4 楼 isno 2010-07-24  
pdreamer 写道
isno 写道
这里是实现apche里PATH_INFO
 
   对于上传文件,肯定要验证文件的type



如果用flash上传控件,所有mime都是application/octet-stream,没法验证的

这里的漏洞是不能留给别人来处理的,你这里稍做rewrite就能解决


谢谢提醒!
3 楼 pdreamer 2010-07-22  
isno 写道
这里是实现apche里PATH_INFO
 
   对于上传文件,肯定要验证文件的type



如果用flash上传控件,所有mime都是application/octet-stream,没法验证的

这里的漏洞是不能留给别人来处理的,你这里稍做rewrite就能解决
2 楼 isno 2010-07-22  
这里是实现apche里PATH_INFO
 
   对于上传文件,肯定要验证文件的type
1 楼 pdreamer 2010-07-22  
危险
当请求 http://localhost/upload/test.jpg/test.php的时候,你说会怎样呢?
如果test.jpg里放的是php脚本,会发生什么事呢?

相关推荐

    nginx流媒体安装包(nginx_mod_h264_streaming,yamdi)

    通过安装这个模块,我们可以让Nginx成为一个强大的流媒体服务器。 1. 安装Nginx - 首先,你需要在你的服务器上安装基础的Nginx。对于Linux系统,可以使用包管理器(如apt-get或yum)来安装。 ``` sudo apt-get ...

    nginx下支持PATH_INFO的方法实例详解

    要想让nginx支持PATH_INFO,首先需要知道什么是pathinfo,为什么要用pathinfo? pathinfo不是nginx的功能,pathinfo是php的功能。 php中有两个pathinfo,一个是环境变量$_SERVER[‘PATH_INFO’];另一个是pathinfo...

    nginx.config_nginx_

    - Nginx支持HTTPS,配置证书和密钥: ```nginx ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; ``` 上述配置指定了SSL证书和私钥文件路径。 9. **安全设置** - 可以...

    nginx_upload_module 加lua 实现上传

    local file_path = file_info["upload_field_name"]["path"] -- 这里可以添加文件大小验证、类型检查等逻辑 -- 存储文件元数据到数据库 local db = require "resty_mysql" local ok, err = db:new() -- 连接数据库...

    fastdfs-nginx-module_v1.16.tar.gz

    3. 解压源码包,进入目录进行编译配置,通常会执行`./configure --with-nginx-module=path/to/nginx/src`。 4. 在Nginx的配置文件中,添加FastDFS模块的配置项,如`fastdfs_path`、`base_path`等。 5. 重新编译并...

    Nginx配置支持ThinkPHP的PATH_INFO

    在部署ThinkPHP项目到Ubuntu服务器时,除了配置Nginx以支持PATH_INFO外,还需要确保ThinkPHP框架的其他配置正确,比如数据库连接、应用参数配置等。 10. 解决方案记录与未来研究: 在文档中提及,在解决问题的过程...

    nginx_tcp_proxy_module-master

    这个第三方模块让Nginx成为了一个更全面的网络流量管理工具。 **模块介绍** `nginx_tcp_proxy_module`是由社区开发的一个扩展模块,目的是将Nginx的功能扩展到TCP层。它允许Nginx作为TCP代理服务器,接收客户端的...

    nginx_upload_module-2.2.0.tar.gz

    Nginx Upload Module 是由 Michael Noll 开发的一个模块,它允许用户在 Nginx 中实现文件上传,包括临时存储上传文件、将文件移动到指定位置、支持断点续传以及验证文件大小和类型等。该模块通常与后端的动态语言如 ...

    nginx+php,让nginx支持PHP的PATHINFO路由模式_亲测成功.zip

    nginx+php,让nginx支持PHP的PATHINFO路由模式_亲测成功.zip apache+php支持PATHINFO路由模式非常容易,但是nginx对pathinfo可不支持,需要你自己配置正则路径.看看我怎么配的

    ffmpeg_nginx_vlc_src2.rar

    让我们详细探讨这些技术及其在Windows环境中的应用。 FFmpeg是一款强大的开源多媒体处理工具,支持音频、视频的编码、解码、转换、分析等多种功能。在直播场景中,FFmpeg常用于将本地摄像头或文件源的视频流推送到...

    nginx 配置pathinfo

    nginx默认不支持pathinfo,最近在调用而支付宝的回调接口 只能使用这种模式

    让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享

    标题中的“让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享”是指在使用Nginx作为Web服务器时,如何配置Nginx以适应ThinkPHP框架的URL重写规则和PATHINFO模式。ThinkPHP是一款流行的PHP开发框架,它的URL重写功能...

    Nginx如何实现pathinfo模式的方法详解

    pathinfo是伪静态的一种,对于用过thinkphp的朋友们来说应该都不陌生,下面这篇文章主要给大家介绍了关于Nginx如何实现pathinfo模式的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。

    fastdfs-nginx-module_v1.16.rar

    它支持文件存储、文件同步、访问控制、负载均衡等功能,特别适合于存储大量小文件。 2. **Nginx介绍**:Nginx以其高效的并发处理能力和低内存占用而闻名,常作为Web服务器和反向代理服务器使用。它可以实现动静分离...

    nginx 开启 pathinfo的过程详解

    要使Nginx支持PathInfo,需要在location块中设置fastcgi相关的参数,将PathInfo传递给PHP解析器。配置示例如下: ``` location ~ \.(php|php5)(.*)?$ { fastcgi_pass ***.*.*.*:9000; fastcgi_index index.php; ...

    nginx配置支持php的pathinfo模式配置方法

    fastcgi_param PATH_INFO $path_info; ``` 在Nginx配置文件中,你可以选择将这些修改集成到`fastcgi_params`文件,或者在每个需要支持PathInfo的`location`块中直接写入。以下是一个示例配置: ```nginx server { ...

    在nginx中配置pathinfo模式支持thinkphp的URL重写

    最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:修改nginx.conf,...

Global site tag (gtag.js) - Google Analytics