我的问题类似于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不能再启动了