ubuntu 16.04 nginx 更改 phpmyadmin url 不起作用

Posted

技术标签:

【中文标题】ubuntu 16.04 nginx 更改 phpmyadmin url 不起作用【英文标题】:ubuntu 16.04 nginx change phpmyadmin url not working 【发布时间】:2021-06-11 03:28:04 【问题描述】:
Ubuntu 16.04.5 LTS Xenial 4.18.8-x86_64-linode117
nginx version: nginx/1.10.3 (Ubuntu)
php v7.0.32-0ubuntu0.16.04.1`

/etc/nginx/sites-available/default

location /phpmyadmin 
        root /usr/share/;
        index index.php index.html index.htm;
        location ~ ^/phpmyadmin/(.+\.php)$ 
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        

        location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ 
                root /usr/share/;
        

/var/www/html 没有符号链接Worx well....

但我似乎无法弄清楚如何更改 phpmyadmin 网址。 尝试在 /var/www/html 下创建符号链接 whatever ->/usr/share/phpmyadminwhatever ->/usr/share/phpmyadmin/ 不起作用, 即使我将/etc/nginx/sites-available/default 更改为:

location /whatever 
        root /usr/share/phpmyadmin/;

如上所述创建符号链接,重新启动 nginxphp7.0-fpm 仍然是新 URL 尝试下载页面...

在网上查找了不同的资源,但没有帮助:digitalocean's guidedevanswers guide 以及SO 上的其他人,但找不到解决方案。 想法??

更新 来自Richard Smith的评论

location /whatever 
    alias /usr/share/phpmyadmin;
    index index.php index.html index.htm;
    if (!-e $request_filename)  rewrite ^ /phpmyadmin/index.php last; 
    # Secure phpMyAdmin Instance
    auth_basic "Admin Login";
    auth_basic_user_file /etc/nginx/.your_pass_file;
    client_max_body_size 68M;

    location ~ ^/phpmyadmin/(.+\.php)$ 
        if (!-f $request_filename)  return 404; 
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME 
        $document_root$fastcgi_script_name;
    

    location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ 
        alias /usr/share/phpmyadmin;
    

【问题讨论】:

您需要使用alias 而不是root。有关示例,请参见 this answer。 @RichardSmith 我用修改后的服务器块更新了问题仍然nginx403 Forbidden... 【参考方案1】:

试试:

location ^~ /whatever 
    alias /usr/share/phpmyadmin;
    index index.php index.html index.htm;
    if (!-e $request_filename)  rewrite ^ /whatever/index.php last; 
    # Secure phpMyAdmin Instance
    auth_basic "Admin Login";
    auth_basic_user_file /etc/nginx/.your_pass_file;
    client_max_body_size 68M;

    location ~ \.php$ 
        if (!-f $request_filename)  return 404; 
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    

您需要在rewrite 语句中使用/whatever/index.php。嵌套的位置块只需要匹配 URI 的结尾。 ^~ 修饰符避免与server 块级别的其他正则表达式location 块发生冲突。在 SCRIPT_FILENAME 中使用 $request_filename。您最后一个嵌套的 location 块似乎没有执行任何功能。

由于this issue,请避免使用aliastry_files。关于if的使用见this caution。

【讨论】:

到目前为止,我发现的唯一答案仍然有效。赞一个。

以上是关于ubuntu 16.04 nginx 更改 phpmyadmin url 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

---------已搬运---------ubuntu16.04搭载nginx。然后更换nginx适配的PHP的版本的操作 || Ubuntu PHP版本切换

ubuntu16.04安装LNMP(ubuntu+Nginx+mysql+PHP7.0)

Ubuntu16.04搭建Nginx+php7.0

Ubuntu 16.04 LTS 安装配置 Nginx 1.10.0 Php7.0-FPM

Ubuntu16.04 下安装配置 nginx+php

sh 在Ubuntu 16.04上安装PHP7.2 NGINX和PHP7.2-FPM