经典的前情提要:

没有面板。手写nginx配置文件。前些日子整了个phpMyAdmin,但是放在网页的根路径下不太安全,要是被扫出来了绝对少不了爆破。于是就想把他放到一个子目录下,但是子目录名称又不想和物理路径的目录相同。那就必然只能整虚拟目录。

nginx的配置资料真是难找。。

Nginx实现虚拟目录无非就是用alias和rewrite。Nginx官方文档对虚拟目录(alias)的描述很少。网上的资料比较少,要么无用要么语法不够精简。但最终还是找到了解决方案。

配置文件(仅location块):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
location /x1 {
alias /var/www/phpMyAdmin;#物理路径。
try_files $uri $uri/ @x2;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;#php版本有可能不同,需要调整。
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;#两种连接方式均可,视实际情况。
}
}

location @x2 {
rewrite /x2/(.*)$ /x1/index.php?/$1 last;
}

注:中间的x1为虚拟目录名,x2随意(变量名)。alias后跟物理路径。php-fpm连接需要根据php版本修改一下。