zoukankan      html  css  js  c++  java
  • 记一次nginx php配置的心路历程

    1.本来搞好了php的配置,想把目录下移一层 从 www.abc.com 变成 www.abc.com/wxapi ,由于我的真实文件目录比路由少了一层public 尝试了很多办法都不行 甚至想到了upstream+proxy_pass 但由于是内部转发会导致获取request url路径出问题。

    例如我的路径是 www.abc.com/wxapi 想获取 /wxapi/public/index.php 用nginx各种正则也无法匹配对。因为$fastcgi_script_name 这里直接就是/wxapi/info.php,不能在中间硬插一个路径

    在将近花费半天后 终于搞定 。终于搞清了fastcgi是如何匹配的
    1.获取变量$fastcgi_script_name
    2.用正则匹配出不含子路径/wxapi/的变量
    3.拼接出真实的script_name地址。 #$real_script_name
    4.这样fastcgi就可以解析最后的$doucument_root/$real_script_name 文件了
    贴下代码

        location /wxapi/ {
          alias /usr/local/www/wxapi/public/;
          index index.php index.html index.htm;
          try_files $uri $uri/ index.php$is_args$args;
       }
      #  location ~ .php {
      #    echo 'fuck';
      #  }
        location ~ ^/wxapi/.*.php {
            # 设置文件根路径
            root /usr/local/www/wxapi/public/;
            include fastcgi_params;
            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            ##正则匹配URI,若能匹配将产生两个子组
            if ($fastcgi_script_name ~ "^(/wxapi/)(.+?.php)(/.+)?$") {
                ##将两个子组赋值给刚生成的两个nginx变量
                set $real_script_name $2; #拼接出真实的script_name地址。 #$real_script_name
                set $path_info $3; #支持pathinfo参数
            }
            # echo "real_script_name----$real_script_name";
            # echo "path_info----$path_info";
            # echo "document_root----$document_root";
            fastcgi_index index.php;
            # 这里一定要多一个/不然匹配会替换掉
            fastcgi_param SCRIPT_FILENAME $document_root/$real_script_name;
            fastcgi_param PATH_INFO       $path_info;
            fastcgi_pass unix:/usr/local/php-7.2.12/var/run/php-cgi.sock;
        }
  • 相关阅读:
    ASP.NET调用word开发环境下正常,iis下报错
    关于CSS的两本书的感觉
    蓝牙模块在HHARM2410上的移植
    关于Activity和Task的设计思路和方法
    用蓝牙连接debian和诺基亚手机
    15.2 连接蓝牙设备
    蓝芽:Linux与手机(at,ftp)
    UBUTUN 通过蓝牙连接Hoary和诺基亚手机
    php class类用法总结 Leone
    提高PHP编程效率的53个要点 Leone
  • 原文地址:https://www.cnblogs.com/tom-chang/p/10007095.html
Copyright © 2011-2022 走看看