鍍金池/ 問答/PHP  Linux/ Nginx 設(shè)置 alias 目錄,總是 404 錯誤。

Nginx 設(shè)置 alias 目錄,總是 404 錯誤。

環(huán)境:

    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 設(shè)置的話就沒有問題,無語了。

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;
    }
}
回答
編輯回答
撥弦
  1. 你這配置也是挺神奇的,干嘛嵌套著寫???
  2. 非正則,且路徑對應(yīng)指令path值的最后一部分,如:

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

    這個是建議使用root的(官方最佳實(shí)踐)

  3. 正則路徑,表達(dá)式里需要帶上匹配組,且應(yīng)該被alias引用,如:

    location ~ ^/phpmyadmin/(.+?\.php)(/.*)?$ {
          alias /web/$1;
    }
  4. 其實(shí)都是文檔上的東西。抽空好好看看吧。
2017年7月14日 22:10
編輯回答
孤星

我搜了很多的配置項(xiàng)詳解,都沒有看到alias這個配置項(xiàng),我都是用的root.你在哪里看到了可以用alias?

2017年2月25日 03:35