首页 > 解决方案 > ubuntu 16.04 nginx 更改 phpmyadmin url 不起作用

问题描述

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/;
        }
}

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

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

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

如上所述创建了一个符号链接,重新启动了两个nginx&php7.0-fpm仍然新的URL试图下载页面......

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

更新
理查德史密斯的评论

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;
    }
}

标签: nginx

解决方案


尝试:

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;
    }
}

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

由于这个问题,请避免try_files使用。请参阅此使用注意事项。aliasif


推荐阅读