thinkphp配置nginx伪静态并解决PATHINFO问题和fix_pathinfo漏洞

nginx.conf的server配置,当文件不存在时,就采用伪静态

server{
    listen 801;
    index  index.html index.htm index.php;
    root D:/data/code/jsjh-admin/wwwroot;
    location /{
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php$1 last;
        }
    }
    include dotphp.conf;
}
dotphp.conf配置php的PATH_INFO
location ~ (\.php$|\.php/) {
    #定义变量 $path_info ,用于存放pathinfo信息
    set $path_info "";
    #定义变量 $real_script_name,用于存放真实地址
    set $real_script_name $fastcgi_script_name;
    #如果地址与引号内的正则表达式匹配
    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
        #将文件地址赋值给变量 $real_script_name
        set $real_script_name $1;
        #将文件地址后的参数赋值给变量 $path_info
        set $path_info $2;
    }
    fastcgi_index index.php;
    include fastcgi_params;#先载入默认的
    #然后在下面加就能覆盖默认的配置
    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
    fastcgi_param SCRIPT_NAME $real_script_name;
    fastcgi_param PATH_INFO $path_info;
    if (-e $document_root$real_script_name){
        fastcgi_pass  127.0.0.1:9000;
    }
}

配置php.ini解决nginx文件类型错误解析漏洞

[PHP]
cgi.fix_pathinfo=0;设0可解决nginx文件类型错误解析漏洞
 
时间: 2024-11-05 05:59:20

thinkphp配置nginx伪静态并解决PATHINFO问题和fix_pathinfo漏洞的相关文章

配置nginx使之支持pathinfo

phalcon项目,oneinstack环境lnmp.配置文件:/usr/local/nginx/conf/vhost/dldh.ccc.conf自动生成的. 问题:除首页外,其他都打不开,且样式文件也打不开.http://dldh.ccc/index.php/back/css/bootstrap.min.csshttp://dldh.ccc/index.php/backend/index/index都报: Access denied. 解决办法:作修改如下. server { listen 8

配置nginx,支持php的pathinfo路径模式

nginx模式默认是不支持pathinfo模式的,类似index.php/index形式的url会被提示找不到页面.下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo. server { listen 8080; server_name ewifiportal.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root D:/Users/xc/Zend/wo

Yii2 配置 Nginx 伪静态

主要检查以下代码: location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php?$args; } 完整代码: server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=o

简单配置nginx使之支持pathinfo

只需要修改3个地方就可以了 location ~ \.php {    #去掉$ root          H:/PHPServer/WWW; fastcgi_pass   127.0.0.1:9000; fastcgi_index  index.php; fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加这一句 fastcgi_param PATH_INFO $fastcgi_path_info;    #增加这一句 fastcgi_param 

配置nginx支持thinkphp框架

因为nginx本身没有支持pathinfo,所以无法使用thinkphp框架,不过我们可以在配置里进行修改使其能够正常使用thinkphp. 1.修改配置支持pathinfo vi /etc/nginx/cong.d/default.conf 在nginx的配置中添加 location ~ \.php/?.*$ {      root html;         #这里的路径需要注意一下,自己之前几次配置错误都是因为从网上直接粘贴的路径不对        fastcgi_pass   127.0

Nginx伪静态配置和常用Rewrite伪静态规则

伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面来介绍nginx 伪静态配置方法有需要了解的朋友可参考. nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态. nginx只需要打开nginx.conf配置文件,在server里面写需要的规则即可. 代码如下: server { listen       80; server_name  haha.

aliyun 主机Nginx 上配置Drupal 伪静态

网上找了好久没有正确的,后面直接在http://wiki.nginx.org/Drupal 上找到原文,但原文中复制过来会出现个 'root' rewrite directive is duplicate 错误和 server 第一列的错误. 对比aliyun上的预先设定的rewrite 发现它们都没有server {} 这个名,并且这个位置也在nginx -t 时报错了. 注释了报错的位置,删除了不适用于drupal 7下面的配置. /alidata/server/nginx/sbin/ngi

nginx伪静态配置教程总结

在nginx中配置伪静态,也就是常说的url重写功能,只需在nginx.conf配置文件中写入重写规则即可. 当然,这个规则是需要熟悉正则表达式,只掌握nginx自身的正则匹配模式即可,对正则不了解的朋友,建议补一下这方面的知识. 下面,收集了几篇关于nginx rewrite重写的教程文章,感兴趣的朋友可以看看. nginx伪静态.url rewrite重写教程: nginx配置301重定向及rewrite重写规则说明 nginx rewrite重写规则语句配置示例 nginx中url重写规则

配置nginx支持pathinfo

服务器运行的nginx+php,centos的系统.因需新部署一个网站,需要配置nginx支持pathinfo功能.网上各种查资料,终于搞定. 首先查看php.ini文件,查找cgi.fix_pathinfo=0,如不是0,改为0.重启php程序. 然后修改nginx配置文件: location ~ \.php {                    ------(去掉php后面的$) fastcgi_pass   127.0.0.1:9000; fastcgi_index  index.ph