【问题标题】:ubuntu 16.04 nginx change phpmyadmin url not workingubuntu 16.04 nginx 更改 phpmyadmin url 不起作用
【发布时间】: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/phpmyadmin 或 whatever ->/usr/share/phpmyadmin/ 不起作用,
即使我将/etc/nginx/sites-available/default 更改为:

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

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

在网上查找了不同的资源,但没有帮助:
digitalocean's guide
devanswers 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 我用修改后的服务器块更新了问题仍然nginx 给403 Forbidden...

标签: nginx


【解决方案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,请避免使用alias 和try_files。关于if的使用见this caution。

【讨论】:

  • 到目前为止,我发现的唯一答案仍然有效。赞一个。
猜你喜欢
  • 1970-01-01
  • 2017-03-27
  • 2021-10-30
  • 2016-09-05
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多