Nginx:通过URL路径提供静态文件服务

4

有什么办法可以只通过一些URL路径来提供静态文件吗?例如,下一个URL模式http://host/static/ *.png 具有/ static / 子字符串(路径),并且Nginx将从那里提供任何静态内容。

在Web服务器文档中,我找到了一个示例:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js)$ { ...

我定义了我的Nginx配置如下:

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /apib {
         #some proxy_pass
    }

    location /apim {
         #some proxy_pass
    }

    location /api {
         #some proxy_pass
    }

我尝试为 */static/*.* 添加额外的 location ,根目录为 /var/www/some_statics
2个回答

4
location ~* ^/static/.+\.(png|whatever-else)$ {
    alias /var/www/some_static;
    expires 24h;
}
location / {
    # regular rules
}

手写内容,可能存在错误。

如果您想扩展规则以匹配anything/something/static/*.png,只需在模式中删除^即可。


在配置文件的服务器部分,Nginx会发送索引页面(根目录)。 - akrisanov
@akrisanov没错。除非在块内部指定了rootalias,否则它们都是从上一级配置继承的。 - msg7086
http://d.pr/i/ViNT 我的意思是,你的解决方案不起作用。我的完整配置现在是:https://gist.github.com/akrisanov/8413535 - akrisanov
你有重新加载配置/重启nginx吗?你也可以尝试 location /static/ { alias /var/www/some_static; } 或阅读这个链接。 - msg7086

0

location ^~ /static/ {
    alias /var/www/some_static;
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接