Nginx try_files(文件夹+文件)回退

标签 nginx

鉴于此文件夹结构:

root folder
    + default
        + settings1.txt
        + settings2.txt
        ...
        + settingsN.txt
    + user00001
        + settings1.txt
        ...
    ...
    + userN
        + settings1.txt
        ...

这个示例网址:
domain.com/user00009/settings1.txt

或者
domain.com/xavi/somefile.txt

我想写一个规则,让我这样做:
folder exists ? check file : 404

file exists ? serve users file : serve default file

我尝试使用 try_files 但我想我只能使用 $uri 我得到整个网址,如果我可以使用 slugs ( $1 = user00009 & $2 = settings1.txt ) 会很棒

那么也许我可以放:
location / {
   root /...
   try_files $1/$2 default/$2 =404;
}

任何的想法?

注意:我知道我可以从 nginx 外部(在本例中为 django )提供文件服务,但我试图加快速度

最佳答案

location ~ ^(/[^/]+)(/.+)$ {
  root ...;
  if (!-d "$document_root$1") {
    return 404;
  }
  try_files $1$2 /default$2 =404;
}

关于Nginx try_files(文件夹+文件)回退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286341/

相关文章:

google-chrome - 跨域 websocket 连接在 chrome 中失败,在 firefox 中工作

nginx - EC2 Nginx 卡在 SYN_ACK 中,用于来自单个 ip 的 http 请求

Nginx:如果 header 不存在或错误,则拒绝请求

nginx - 在 nginx 重写中发送额外的 header

regex - nginx将所有白名单重写为index.php

nginx - 如何在jwilder/nginx-proxy下将no-www重定向到www?

Django Server 不影响 View 变化

mongodb - 在 centos 6.5 + nginx 上安装 mongodb

java - 如何最好地组织我的项目以获得最佳的 nginx 使用

python - websockets 由 nginx 通过 https 代理到 Gunicorn,给出 400(错误请求)