概述
本章,您将学习到 Nginx 的目录别名功能。
几乎所有的 Web 服务器都支持这个功能,简单理解为一种类似调取资源文件的快捷方式。
默认情况下,当 Nginx 接受客户端请求时,会搜索 location / { } 中 root 指令指定目录下的资源并发送给客户端。但是,有时客户端访问的资源并不在这个指令指定的目录下,我们希望被访问的资源在操作系统中被保留在原始的位置且不需要移动,这就需要目录别名。
在使用 Nginx 的目录别名功能时,需要注意以下几点:
- 要实现该功能,您需要在 location 上下文中使用
alias指令 alias指令后面的指令参数必须是一个目录且结尾处必须带有 "/" ,表明这是一个目录,如alias /test/;- 若 location 上下文匹配的是目录资源,则目录也应该在结尾处带有 "/",如
location /images/ { ... } - 若使用了目录别名功能,则在对应的 location 上下文中通常都会使用
index指令定义一个或多个索引文件,若索引文件不存在,Nginx 默认会提示 "403" 错误,除非开启了目录浏览(目录列表)功能
相关指令说明
alias指令 - 启用别名功能,语法为alias path;。仅能配置在 location 上下文中autoindex指令 - 当不存在索引文件时,是否启用目录浏览功能,语法为autoindex on | off;,默认为autoindex off;
功能演示
修改主配置文件,文件内容如下所示:
Shell > vim /usr/local/nginx/conf/nginx.conf
user nginx;
worker_processes 4;
error_log logs/error.log error;
pid logs/nginx.pid;
worker_rlimit_nofile 7400;
events {
use epoll;
worker_connections 1024;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
server_tokens off;
gzip on;
gzip_vary on;
gzip_buffers 32 4K;
gzip_comp_level 5;
gzip_types text/plain text/css text/xml application/json application/javascript application/xml application/xhtml+xml image/svg+xml application/x-font-ttf application/x-font-opentype application/vnd.ms-fontobject font/woff;
gzip_min_length 256;
server {
listen 192.168.100.20:80;
server_name www.games.com;
access_log logs/games-access.log main;
charset utf-8;
location / {
root /html/games/;
index index.html index.htm;
location ~* \.(jpg|css|jpeg|xml|js|gif) {
expires 4h;
}
}
location /images/ {
alias /var/www/attachment/;
autoindex off;
location ~* \.(jpg|css|jpeg|xml|js|gif) {
expires 2h;
}
}
}
}
创建对应的目录:
Shell > mkdir -p /var/www/attachment/
使用 Windows 10/11 的 PowerShell 上传一张图片:
PS > cd E:\
PS > scp -P 22 .\dogs.jpg root@192.168.100.20:/var/www/attachment/
将 Nginx 启动:
Shell > /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx
验证
请求静态资源:
Shell > curl -I http://192.168.100.20/images/dogs.jpg
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 04 Sep 2026 02:16:13 GMT
Content-Type: image/jpeg
Content-Length: 6040300
Last-Modified: Fri, 04 Sep 2026 02:09:12 GMT
Connection: keep-alive
ETag: "6a9a2848-5c2aec"
Expires: Fri, 04 Sep 2026 04:16:13 GMT
Cache-Control: max-age=7200
Accept-Ranges: bytes
当用户的浏览器请求 http://192.168.100.20/images/dogs.jpg 时,在操作系统看来,实际请求的是 /var/www/attachment/dogs.jpg 。从命令的输出可以看到,静态缓存也是生效的。
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论










