V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ukipoi
V2EX  ›  问与答

请教一下关于用 nginx 配置静态资源访问的问题

  •  
  •   ukipoi · 2018-12-13 10:38:39 +08:00 · 2441 次点击
    这是一个创建于 2164 天前的主题,其中的信息可能已经有所发展或是发生改变。

    配置如下:

    server {
            listen       8099;
            server_name  localhost;
            
            location / {
                root E:/img/;
                autoindex on;
            }
            location /img/{
                root E:/img/;
                autoindex on;
            }
        }
    

    发生了这样的问题:
    我直接以 localhost:8099/123.jpg 可以访问到图片。
    但是我以 localhost:8099/img/123.jpg 会显示 404 错误。
    我以为是他把 "/img/123.jpg" 理解成了 "E:/img/" 下 "img" 文件夹里的 "123.jpg" 图片,所以我把 "/" 的 location 配置注释掉了,只保留 "/img/" 的配置,但是访问还是显示 404 错误,请问这是什么原因?正确的话应该如何配置?
    系统是 WIN7 nginx 版本是 1.14.2

    4 条回复    2018-12-13 13:55:03 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       2018-12-13 10:42:53 +08:00 via Android   ❤️ 1
    location /img/{
    root E:/img/;
    autoindex on;
    }

    改为

    location /img/{
    alias E:/img/;
    autoindex on;
    }

    原理自己看官方文档吧
    https://nginx.org/r/root
    zpf124
        2
    zpf124  
       2018-12-13 11:20:27 +08:00   ❤️ 1
    location 只是匹配,而不是匹配之后截掉匹配的部分,另外你对于 这个 location 的匹配顺序理解也有些问题。
    除了几个个别的规则外,location 的匹配是越精确越优先的,在同样精度的情况下才会按照文本顺序匹配的, 你百度搜一下 有很多这种文章。


    对于 你这个请求, /img/123.jpg 在不注释掉任何一个之前 也依旧是被 /img/ 的 location 匹配的。

    但 只是匹配, location 不会截取 URI 的

    也就是说 进了这个 location 处理里面的 URI 还是 /img/123.jpg 。 而你指定的 root 是 E:/img/ 自然拼接的就多一层了。

    改成 这样也行。

    location /img/{
    root E:/;
    autoindex on;
    }
    msg7086
        3
    msg7086  
       2018-12-13 13:50:09 +08:00
    非常典型的 alias 与 root 的区别。用 root 的话解析地址就是 root 地址加上全文件名。
    loading
        4
    loading  
       2018-12-13 13:55:03 +08:00 via Android
    这种看 error.log 就能自己修过去。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5668 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 06:26 · PVG 14:26 · LAX 22:26 · JFK 01:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.