Best way to only allow specific file extensions?

Cliff Wells cliff at develix.com
Tue Mar 9 00:01:56 MSK 2010


On Mon, 2010-03-08 at 15:39 -0500, David Taveras wrote:
> Hello,
> 
> Iam running a reverse proxy and I would like only to relay certain
> type of extensions to the backend.. (and ofcourse any directory)
> 
>       location / {
>         proxy_pass  http://www.domain.org:80/;
>         proxy_pass_header  Set-Cookie;
>         proxy_set_header  X-Real-IP  $remote_addr;
> 
>       }
> 
>      ## Only allow these file types to document root
>       location / {
>         if ($request_uri ~*
> (^\/|\.html|\.jpg|\.php|\.png|\.css|\.ico|\.js|\.swf|\.gif|robots\.txt)$
> ) {
>           break;
>         }
>         return 444;
>       }

You can use regular expressions in the location, no need for separate
"if":

location ~ ^(\/|\.html|\.jpg|\.php|\.png|\.css|\.ico|\.js|\.swf|\.gif|robots\.txt)$ {
  return 444; 
}

Also, double-check your regex.  It looks like you've misplaced your
parens in the original, you have (^...)$ and it should be ^(...)$.

Regards,
Cliff





More information about the nginx mailing list