nginx - 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/phpmyadmin
或whatever ->/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;
}
}
解决方案
尝试:
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.php
在rewrite
语句中使用。嵌套的位置块只需要匹配 URI 的结尾。该^~
修饰符避免location
在server
块级别与其他正则表达式块发生冲突。$request_filename
在 SCRIPT_FILENAME 中使用。您的最后一个嵌套location
块似乎没有执行任何功能。
推荐阅读
- r - 如何检查数字是否仅在一组中增加?
- java - 第一次在控制台中显示 InvocationTargetException 而不是 NoClassDefFoundError 的目的
- pine-script - 如何将 Mql4 indicatorCounted() 转换为 Pinescript
- r - 基于 r 中条件的子集数据
- discord.js - DiscordJS Commando TypeError:无法读取 null 的属性“on”
- pandas - 如何将累积频率值转换为正常频率
- python - Tkinter 图像渲染很慢。我应该如何改进它?
- ffmpeg - 使用 ffmpeg 连接文件时出错
- json - 访问 DeepL 替代翻译
- swift - 应用程序沙箱处于活动状态的 Mac OS xcrun