nginx配置静态文件中root和alias的区别

nginx配置静态文件中root和alias的区别

在使用 Nginx 配置静态文件时,rootalias 是两个常用的指令,但它们的使用方式和作用存在一定的区别。以下是两者的详细对比:

root 指令

定义一个根目录,后续的 URI 会基于这个根目录解析。使用 root 指令时,Nginx 会将请求的 URL 路径与指定的根目录路径进行拼接。这意味着 URL 中的路径会映射到文件系统中的对应位置。

例如,假设我们有以下配置:

location /static/ {
    root /var/www;
}

当收到的请求是 https://199604.com/static/image.jpg 时,Nginx 会尝试访问文件/var/www/static/image.jpg 并返回该文件。

root 会将定义的目录路径 /var/www 和用户请求的 URI /static/css/style.css 拼接起来。

这里需要注意的是,root 指令会将匹配的 URL 路径直接映射到文件系统中的相对路径,而不是将请求 URL 中的路径添加到指定的根目录路径后。

alias 指令

定义一个别名,将请求的 URI 映射到指定的路径。与 root 不同,alias 指令允许我们在返回文件时,重写 URL 路径的部分或全部。这对于需要在返回文件时修改 URL 路径的情况非常有用。

例如,假设我们有以下配置:

location /static/ {
    alias /var/www/;
}

当收到的请求是 https://199604.com/static/image.jpg 时,Nginx 会查找文件系统中的 /var/www/image.jpg 并返回该文件。即当请求 URL /static/css/image.jpg,Nginx 会尝试访问文件 /var/www/image.jpg

注意:alias 路径通常要以 / 结尾,以避免路径拼接出错。

aliasroot 不可混用。如果需要切换,请确保配置一致性。

root 和 alias 的主要区别

特性 root alias
路径拼接规则 会将 root 路径和请求 URI 拼接 替换 location 指定部分
配置灵活性 配置简单,适合直接映射路径的场景 更灵活,适用于路径重定向或改写场景
示例路径 /var/www/html/static/css/style.css /var/www/static_files/css/style.css

一个完整的简单配置

server {
    listen 80 ;
    server_name localhost;

    ##增城默认前端资源访问
    location / {
        autoindex off;
        root   /AppHome/nginx/html/zcct;
        absolute_redirect off ; 
        index  index.html index.htm;
        access_log /var/log/nginx/zcct_access.log;
        # 2022-10-12  add 
    }
    ##汕头前端资源访问;
    location /shantou {
        autoindex off;
        alias   /AppHome/nginx/html/shantou;
        try_files $uri $uri/ /shantou/index.html;
        index  index.html index.htm;
        access_log /var/log/nginx/shantou_access.log ;
    }
}

autoindex off:关闭目录索引功能。如果请求的路径没有指定具体文件(如 /example/),且该目录下没有默认的 index.html 文件,Nginx 不会列出目录内容。

absolute_redirect off

  • 禁用绝对重定向。当使用 try_filesindex 时,Nginx 不会生成带主机名的绝对重定向 URL。

try_files $uri $uri/ /shantou/index.html;

try_files用于处理请求路径:

  1. 首先检查请求的文件 $uri 是否存在。
  2. 如果 $uri 是一个目录,则检查是否存在 $uri/
  3. 如果前两步都无法找到对应的文件或目录,则返回 /shantou/index.html

这个配置适合用于单页应用(如 Vue、React 等),因为单页应用的所有路由都会回退到 index.html

参考

1.https://www.cnblogs.com/benjieqiang/p/17535499.html

评论

  1. Macintosh Chrome 131.0.0.0
    1 月前
    2024-11-26 17:47:59

    以前我常常分不清try_files和alias

    • 博主
      关关
      Windows Edge 118.0.2088.76
      4 周前
      2024-11-27 8:22:06

      我也一样。所以还是gpt靠谱,不知道直接问。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇