使用try_files的Nginx替换文件夹?

时间:2016-12-20 10:12:24

标签: nginx

我正在尝试使用try_files指令来提供以下机制:我有一个包含静态文件的共享文件夹:

.
├── _shared
│   └── assets
│       ├── favicon.ico
│       └── logo.png
├── website1
│   └── assets
│       └── favicon.ico
├── website2
│   └── assets
│       └── logo.png
└── website3
    └── assets
        └── hello.txt

我的目标是:如果请求的文件存在网站文件夹,则将其返回,否则,如果文件存在于 _shared 文件夹中,则将其返回,否则为404。

例如:

  • HTTP GET website1.com/assets/favicon.ico - > 200(来自/website1/assets/favicon.ico
  • HTTP GET website1.com/assets/logo.png - > 200(来自/_shared/assets/logo.png
  • HTTP GET website2.com/assets/favicon.ico - > 200(来自/_shared/assets/favicon.ico
  • HTTP GET website2.com/assets/logo.png - > 200(来自website2/assets/logo.png
  • HTTP GET website3.com/assets/hello.txt - > 200(来自website3/assets/hello.txt
  • HTTP GET website1.com/assets/hello.txt - > 404

是否可以使用try_files执行此操作?怎么样 ?如果没有,是否可以做其他事情?

注意:尝试this但没有成功。

1 个答案:

答案 0 :(得分:0)

以下配置工作,例如。 website1

location /assets {
    root /website1;
    try_files $uri @default_assets;
}

location @default_assets {
    root /_shared;
}