How to serve all existing static files directly with NGINX, but proxy other requests to jetty?

My question is similar to

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?

After a squence of Q&A,I was told that “try_files” is another
option(not
sure which one is more propriate for my use case ),then after googling
and
reading,I tried this:

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_key         backend$request_uri;
proxy_cache_valid       200  1h;
proxy_cache_use_stale   error timeout invalid_header;

}

but get “403 forbidden” error,so please tell me what I did wrong?Thanks.

Posted at Nginx Forum:

On Tue, Nov 18, 2014 at 10:05:26AM -0500, AlexLuya wrote:

Hi there,

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;
}

That says that if you request /test/file.jpg, nginx should send the
file /ngixRoot/test/test/file.jpg.

What response do you get?

What does the log file say is happening?

After a squence of Q&A,I was told that “try_files” is another option(not
sure which one is more propriate for my use case ),then after googling and
reading,I tried this:

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

but get “403 forbidden” error,so please tell me what I did wrong?Thanks.

What request did you make, to get the 403 response? What response did
you want to get? What does the log file say about that request?

From your mail, it is not clear to me exactly what you want.

Possibly something like

root /nginxRoot/;
location /test/js/ {}
location /test/html/ {}
location /test/images/ {}
location / {
proxy_pass http://jetty;
# and whatever else is involved in jetty configuration
}

would come close?

If not, it might be helpful if you can describe what response you
want from a request for /test/js/file.js and for /test/js/missing.js,
for example. (Or have I misunderstood, and you actually care about
requests like /js/file.js?)

f

Francis D. [email protected]