如何使用NGINX直接提供所有现有静态文件,但是代理其他对jetty的请求?

时间:2014-11-18 12:37:16

标签: nginx proxy

我的问题类似于How to serve all existing static files directly with NGINX, but proxy the rest to a backend server.

不同的是我的站点目录结构如下所示:

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

所以网站根目录不是“/ nginxRoot /”而是“/ nginxRoot / test /”

我希望nginx能够提供已经放在目录中的所有静态文件:js,images,html和代理其他对jetty的请求,我试过了:

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

所有对码头的请求都有效,但是对静态文件的所有请求都没有,我怀疑它们是否也被转发到码头,这是真的吗?如何解决这个问题?

更新 遵循@ Alexey.Ten的建议

我试过

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

但是nginx不能再启动了

0 个答案:

没有答案