两个不同位置的 Try_files

两个不同位置的 Try_files

我有生产 (site.com) 和开发 (dev.site.com) 站点,它们位于同一台服务器上。我尝试针对以下情况配置 Nginx:

所有图像仅存储在生产中。例如/var/www/site.com/html/images。我可以为开发服务器上链接到生产的所有图像创建一个别名,并/var/www/dev.site.com/html/images/img.jpg从中获取图像/var/www/site.com/html/images/img.jpg

但是如果开发人员为了开发目的上传图像,此链接将会断开,因为该图像仅存在于开发图像文件夹中。

Nginxtry_files非常适合此用途,但我无法正确配置它。

我的规则是:

location ^~ /images/ {
    try_files $uri /var/www/site.com/html/images/$uri =404;
}

但它不起作用。这有什么问题?

答案1

try_files指令接受文件参数看起来像 URI。文件的路径名是通过将root指令的值与文件范围。

对于您使用的两个路径名(/var/www/site.com/html/images/img.jpg/var/www/dev.site.com/html/images/img.jpg),其共同部分是/var/www

该变量$uri将被设置为/images/img.jpg,因此文件参数只需要提供缺失的部分。

例如:

location ^~ /images/ {
    root /var/www;
    try_files /site.com/html$uri /dev.site.com/html$uri =404;
}

这个文件了解详情。

相关内容