title: Redirect Image file not found to Uri with NGinx
body: <p>I'm switching a Laravel Website from Apache (htaccess) to NGinx. I have built an Image Serving that produces a uri with the appropriate parameters for resizing ex : <code>pics/images/max24h/music_video_red_icon.png</code>.
  I Apache does not find the file it would redirect it to a route <code>image/images/max24h/music_video_red_icon.png</code> where an Action in laravel creates and returns the image. In <code>.htaccess</code> it works with this code :</p>
  
  <pre><code>RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^pics(.*)\.(jpe?g|png|gif|ico|bmp)$ /image$1.$2 [R=307,L]
  </code></pre>
  
  <p>Now in NGinx conf, How do I redirect it properly? I tried a lot of suggestions like :</p>
  
  <pre><code># Redirect pics file not found to php laravel route to create the image
  location @img_proxy {
      rewrite ^/pics(.*)\.(jpe?g|png|gif|ico|bmp)$ /image$1.$2;
  }
  
  location / {
      try_files $uri $uri/ /index.php?$query_string;
  }
  </code></pre>
  
  <p>It does not work at all, the server works if I remove those lines. I'm using Mac High Sierra 10.13.6 . Could it be some config conflict? Here is the full <code>nginx.conf</code> :</p>
  
  <pre><code>user _www _www;
  
  worker_processes  1;
  
  #error_log  logs/error.log;
  #error_log  logs/error.log  notice;
  #error_log  logs/error.log  info;
  
  #pid        logs/nginx.pid;
  
  
  events {
      worker_connections  1024;
  }
  
  
  http {
      include       mime.types;
      default_type  application/octet-stream;
  
      #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
      #                  '$status $body_bytes_sent "$http_referer" '
      #                  '"$http_user_agent" "$http_x_forwarded_for"';
  
      #access_log  logs/access.log  main;
  
      sendfile        on;
      #tcp_nopush     on;
  
      #keepalive_timeout  0;
      keepalive_timeout  65;
  
      #gzip  on;
  
      server {
          listen 80 default_server;
          server_name localhost;
          root /var/www/megalobiz/public;
  
          add_header X-Frame-Options "SAMEORIGIN";
          add_header X-XSS-Protection "1; mode=block";
          add_header X-Content-Type-Options "nosniff";
  
          index index.html index.htm index.php;
  
          charset utf-8;
  
          gzip on;
              gzip_vary on;
              gzip_disable "msie6";
              gzip_comp_level 6;
              gzip_min_length 1100;
              gzip_buffers 16 8k;
              gzip_proxied any;
              gzip_types
                  text/plain
                  text/css
                  text/js
                  text/xml
                  text/javascript
                  application/javascript
                  application/x-javascript
                  application/json
                  application/xml
                  application/xml+rss;
  
          location = /favicon.ico { access_log off; log_not_found off; }
          location = /robots.txt  { access_log off; log_not_found off; }
  
          error_page 404 /index.php;
  
          # removes trailing slashes (prevents SEO duplicate content issues)
          #if (!-d $request_filename)
          #{
          #    rewrite ^/(.+)/$ /$1 permanent;
          #}
  
          # Redirect pics file not found to php laravel route to create the image
          location ~ ^/pics(.*)\.(jpe?g|png|gif|ico|bmp)$ {
              try_files $uri @img_proxy;
          }
  
          location @img_proxy {
              rewrite ^/pics(.*)\.(jpe?g|png|gif|ico|bmp)$ /image$1.$2;
          }
  
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
  
          location ~ \.php$ {
              try_files      $uri =404;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
  
          location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|svg|woff|woff2|ttf)\$ {
              expires 1M;
              access_log off;
              add_header Cache-Control "public";
          }
          location ~* \.(?:css|js)\$ {
              expires 7d;
              access_log off;
              add_header Cache-Control "public";
          }
  
          location ~ /\.(?!well-known).* {
              deny all;
          }
  
          location ~ /\.ht {
              deny  all;
          }
      }
  
      include servers/*;
  }
  </code></pre>