alias实现URL到文件系统的精确映射:location必须以/结尾,alias值为真实路径(不编码、不转义),拼接逻辑为“去掉匹配前缀后拼接”。
alias 路径别名不是“额外起个名字”,而是用 location 匹配前缀 + alias 指定真实路径 实现 URL 到文件系统的精确映射。写法核心就三点:location 必须以 / 结尾、alias 值必须是服务器上真实存在的路径(不编码、不转义)、拼接逻辑是“去掉匹配前缀,再拼到 alias 后面”。
这是最常用也最安全的模板:
location /static/ { ... },不能写成 location /static
/ 结尾(除非指向单个文件),例如 alias /var/www/assets/;
/static/css/main.css → Nginx 去掉 /static/,剩下 css/main.css,再拼到 /var/www/assets/ 后,得到真实路径 /var/www/assets/css/main.css
alias 后面直接写原始路径,不 URL 编码,也不加反斜杠转义:
alias /var/www/my site/中文目录/;(空格和中文照原样写)alias /var/www/my%20site/%E4%B8%AD%E6%96%87/;(URL 编码路径,Nginx 找不到)alias "/var/www/my site/";(Shell 风格转义,在 Nginx 配置里无效)如果只想把某个 URL 映射到一个固定文件(比如 favicon 或健康检查页),alias 可以不加结尾斜杠:
location = /favicon.ico { alias /var/www/icons/favicon.ico; }location = /health { alias /var/www/status.html; }= 表示精确匹配,避免意外匹配其他路径;alias 指向的是完整文件路径,不是目录很多 403、404 其实不是路径写错,而是逻辑理解偏差:
location /api 匹配 /api/v1/data,可能只去掉 /api,剩下 v1/data,拼出来变成 /path/v1/data)/ → Nginx 会把它当文件处理,返回 404 或 500