zoukankan      html  css  js  c++  java
  • nginx 执行理解

    nginx是一个代理(apache)或者自己处理

    location ~ .php
    {
    try_files $uri =404;
    fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_index index.php;
    include fcgi.conf;

    }

    如果自己处理 fastcgi_pass unix:/tmp/php-cgi.sock;

    如果代理 写你代理地址比如 127.0.0:9090 (apache)

    比如你输入  http://203.195.193.113/index.php/User/index

    交给php处理

    php不能识别PHP_SELF ,SCRIPT_NAME等 因为index.php?xxx=aaa这种他就直接能识别 而/ 符号,它就不能识别index.php了

    拿tp框架来说 我们可以添加下面

    set $path_info "";#初始化一个变量
    set $real_script_name $fastcgi_script_name;#初始化一个变量,并且获取到一个原始赋值
    if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {#检测如果.php后面还存在/开始参数,将参数处理
    set $real_script_name $1;#将第一个正则子串匹配到的赋值
    set $path_info $2;#将第二个正则子串匹配到的赋值
    }
    fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;#修改SCRIPT_FILENAME值
    fastcgi_param SCRIPT_NAME $real_script_name;#修改SCRIPT_NAME值
    fastcgi_param PATH_INFO $path_info;#修改PATH_INFO值
    #上述三个赋值都是replace into的模式,这些值都是写在fcgi.conf中

    比如你输入  http://203.195.193.113/index.php/User/index

    它重新定义了SCRIPT_FILENAME ,PATH_INFO等

    tp框架是根据$_SERVER 来进行处理的 如果$_SERVER里面有些字段都没有 那你这么可能找到那些文件呢??

    他就会报404找不到文件错误  具体这么写规则见网上教程

  • 相关阅读:
    Hello, Fedora.
    Android与Linux分道扬镳
    VIM教程V1.5梁昌泰
    强大的NTFS文件系统
    Linux下的cc与gcc
    g++与gcc的区别
    Fedora下解压缩的相关问题
    The GNU C Reference Manual
    Linux Kbuild文档
    实验一:计算机是怎样工作的
  • 原文地址:https://www.cnblogs.com/hxl2009/p/3587850.html
Copyright © 2011-2022 走看看