1

My question is similar to How to serve all existing static files directly with NGINX, but proxy the rest to a backend server.

different is that my site directory structure looks like this:

/nginxRoot/test/js        
/nginxRoot/test/images  
/nginxRoot/test/html
........       

So the site root isn't "/nginxRoot/" but "/nginxRoot/test/"

I want to nginx to serve all static files that have been put at directories:js,images,html,and proxy other requests to jetty,I have tried:

location ~ ^/test/(.*)\.   (jpg|jpeg|gif|png|js|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
{
    root  /ngixRoot/test;
}

 location ~ ^/test/(.*)$ {
    proxy_pass http://127.0.0.1:8080/$1$is_args$args;
    proxy_redirect off;
}

All requests to jetty works,but all requests to static files don't,I doubt they are forwarded to jetty also,is that true?how to fix this problem?

Update Followed the suggestion of @Alexey.Ten

I tried

location ~ ^/test/$ {       
   try_files $uri $uri/ @jetty
} 

location @jetty {
    internal;
    add_header X-Local true;
    add_header X-Cache $upstream_cache_status;

    proxy_pass              http://$http_host:8080$uri$is_args$args;
    proxy_cache             one;
    proxy_cache_key         backend$request_uri;
    proxy_cache_valid       200  1h;
    proxy_cache_use_stale   error timeout invalid_header;
}

but nginx can't be started any more

Community
  • 1
  • 1
Alex Luya
  • 9,412
  • 15
  • 59
  • 91

0 Answers0