#独家
nginx 配置为什么把 root 写到 location 模块中就异常 ?

2023-06-24 0 1,862

server 配置如下

server {
        listen       80;
        server_name  localhost;

        root   /data/wwwroot/public;

        location / {
            # root   /data/wwwroot/public;
            index  index.html index.htm index.php;
        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   html;
        }

        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php$1 last;
        }

        location ~ \.php(.*)$ {
            # root   /data/wwwroot/public;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
    }

问题是

1、把 root 放到 Localtion 中,同时注释掉 server 中的 root ,请求得到的实际路径是
/usr/local/nginx/html/

2、应用1操作,同时把 location ~ .php(.*)$ 中 root 启用,实际请求会是
/data/wwwroot/public/index.php/index.php
多了个 index.php 出来,不知道是哪里触发的

3、尝试修改 fastcgi_param SCRIPT_FILENAME 为项目实际路径也无效果 !

  1. 没记错的话,location 里应该用 alias,原因忘记了
  2. 看你的配置,似乎少了 try_files $uri $uri/ /index.php$args;,没有先尝试直接命中的文件。不确定是不是这个原因。
  3. 有没有效果不是试出来的,你得先找到 SCRIPT_FILENAME 的生效原因,改它才有意义
  4. 2023 年了,还在用 9000 啊……可以升级到 php-fpm 了
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 nginx 配置为什么把 root 写到 location 模块中就异常 ? https://www.jkxiazai.com/1847.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务