我有生产 (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;
}
看这个文件了解详情。