为什么我的 nginx 别名不起作用?

为什么我的 nginx 别名不起作用?

我正在尝试设置一个别名,这样当有人访问时/phpmyadmin/,nginx 将从而/home/phpmyadmin/不是从通常的文档根目录提取它。但是,每次我提取 URL 时,它都会在所有未通过 fastcgi 提取的项目上给出 404。fastcgi 似乎工作正常,而其余的则不行。strace告诉我它正在尝试从通常的文档根目录提取其他所有内容,但我不知道为什么。有人可以提供一些见解吗?

这是我的配置的相关部分:

location ~ ^/phpmyadmin/(.+\.php)$
{
        include fcgi.conf;
        fastcgi_index index.php;
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}

location /phpmyadmin
{
        alias /home/phpmyadmin/;
}

答案1

找到了一个办法。我不确定这是否是最好的办法,但它现在肯定有效。

这是我所做的:

location ~ ^/phpmyadmin/(.*)$
{
        alias /home/phpmyadmin/$1;
}

答案2

我不确定,但你有没有尝试过这样写:

location /phpmyadmin/
{
        alias /home/phpmyadmin/;
}

另外,您尝试从哪个 URI 访问它?

据我了解,你必须使用 URI

/home/phpmyadmin/

不仅仅是

/phpmyadmin/

你可以在这里读更多关于它的内容:http://nginx.org/en/docs/http/ngx_http_core_module.html

答案3

尝试

location ^~ /phpMyAdmin/
{
    alias /home/phpmyadmin/;

    location ~ \.php$
    {
        include fcgi.conf;
        fastcgi_index index.php;
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
    }
}

答案4

就我而言:评论此

#     location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|svg)$ {
#       try_files $uri $uri/ @router;
#     }

是工作

 location /realpath {
         alias /Users/hhh/Desktop/work/xxx/public;

#          return 200 '$request_filename:$document_root:$realpath_root\n';
       }

相关内容