Nginx 设置 alias 目录,总是 404 错误。

环境:

    CentOS 7.4 x64
    Nignx 1.14
    PHP 7.2.6
   

配置文件 Nginx.conf 根/root 为 /web/public, phpmyadmin 放在 /web/phpmyadmin,

location /phpmyadmin/ {
    alias /web/phpmyadmin/;
    index index.php index.html index.htm;
    location ~ ^/phpmyadmin/(.+?\.php)(/.*)?$ {
        alias /web/phpmyadmin/;
        fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /web/phpmyadmin/$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ ^/phpmyadmin/(.+)\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)(/.*)?$ {
        alias /web/phpmyadmin/;
        expires 6d;
    }
}

配置代码如上,总是提示 404 错误。
Nignx 错误信息: FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

使用 root 设置的话就没有问题,无语了。

location /phpmyadmin/ {
    root /web;
    index index.php index.html index.htm;
    location ~ ^/phpmyadmin/(.+?\.php)(/.*)?$ {
        root /web;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ ^/phpmyadmin/.*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico|js|css)$ {
        root /web;
        expires 7d;
    }
}
阅读 9.7k
1 个回答
  1. 你这配置也是挺神奇的,干嘛嵌套着写啊?
  2. 非正则,且路径对应指令path值的最后一部分,如:

    location /phpmyadmin/ {
      alias /web/phpmyadmin/;
    }

    这个是建议使用root的(官方最佳实践)

  3. 正则路径,表达式里需要带上匹配组,且应该被alias引用,如:

    location ~ ^/phpmyadmin/(.+?\.php)(/.*)?$ {
          alias /web/$1;
    }
  4. 其实都是文档上的东西。抽空好好看看吧。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏