Nginx - 带有args和扩展名的try_files

时间:2015-10-02 06:52:25

标签: file nginx configuration http-proxy

我在这里感到沮丧。 包含静态文件的文件夹:

 /home/jenkins/shared/images/
   /project
      /folder
        EyZvhbPJg.jpg
        EyZvhbPJg.jpg?width=200.jpg

Nginx后端配置

    location @render {
       rewrite ^ /img$target break;
       proxy_pass http://127.0.0.1:3001;
    }

想象一下一个URL /images/project/folder/EyZvhbPJg.jpg?width=200

逻辑是。 如果找不到文件,则会触发@render位置(创建文件 - 调整大小或执行所需的任何操作)

之后,该文件由nginx提供。问题是$ args和$ ext 从理论上讲,nginx的目标路径应如下所示:

 /home/jenkins/shared/images/$uri?$args$ext

必须有一个条件,如果没有设置$ args,?$ args应该与$ ext一起被忽略

我尝试了很多可能的变化,但似乎没有用。中间有东西被打破了。事实证明,如果条件和别名,我不能使用。

  location ~ ^\/images(?<target>.*\.(?<ext>jpg|png|jpeg|gif).*) {
       try_files /cached @render;
    }
    location ~ ^\/cached(?<target>.*(?<ext>\.jpg|\.png|\.jpeg|\.gif).*) {
         alias /home/jenkins/shared/images/$target?$args$ext;
    }

    location @render {
       rewrite ^ /img$target break;
       proxy_pass http://127.0.0.1:3001;
    }
    location / {
        proxy_pass          http://127.0.0.1:3001;
    }

非常感谢任何提示或指示! 提前谢谢!

0 个答案:

没有答案