Nginx 静态图像无法重定向

Nginx 静态图像无法重定向,nginx,ghost-blog,Nginx,Ghost Blog,我有一个NGINX服务器,我用它为两个鬼博客站点提供反向代理服务。对于静态内容,我希望它跳过节点服务,直接由NGINX提供服务。应该很直截了当,但有一个转折点 下面是一个配置块,用于设置反向代理,然后为静态内容提供异常。注意:双括号中的引用替换为我正在使用的两个不同Ghost服务的名称: location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_

我有一个NGINX服务器,我用它为两个鬼博客站点提供反向代理服务。对于静态内容,我希望它跳过节点服务,直接由NGINX提供服务。应该很直截了当,但有一个转折点

下面是一个配置块,用于设置反向代理,然后为静态内容提供异常。注意:双括号中的引用替换为我正在使用的两个不同Ghost服务的名称:

location / {
    proxy_redirect off;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    proxy_set_header    Host                $http_host:$server_port;
    proxy_set_header    X-NginX-Proxy       true;
    proxy_set_header    Connection          "";
    proxy_http_version  1.1;
    proxy_cache         ghost_{{slug}}_cache;
    proxy_cache_key     ghost$request_uri$scheme;
    proxy_pass          http://ghost_{{slug}}_upstream;
}

location /assets {
    root                {{assets_root}};    
}
因此,对于/assets请求,如http://example.com/assets/js/doit.js 上面的配置将匹配/assets,然后将assets/js/doit.js追加到上面定义的根目录。正如我所说的,这部分是有效的,因为我指向的位置在文件系统中有完整的URL路径,例如,有一个目录assets/js,其中有一个doit.js文件

我一直在努力解决的问题是——我对NGINX非常陌生,所以我怀疑这很容易——类似的情况是,您有这样一个配置块:

location /content {
    root                {{content_root}};
}
从配置和执行的角度来看,该块与资产块相同,但在本例中,我希望它只传递URL中内容后面的部分。所以如果请求是http://example.com/content/images/july/foo.jpg 然后返回文件系统中位于以下位置的内容:

{{content_root}+/images/july/foo.jpg 而不是我现在得到的是:

{{content_root}}+content+/images/july/foo.jpg
好的,我已经找到了我问题的答案。。。假设URL GET请求为http://example.com/content/js/foobar.js:

原始位置指令:

location /content {
    root                /var/www/content;
}
将错误地在/var/www/content/content目录中查找javascript文件

而是使用以下位置指令:

location /(content)/ {
    root                /var/www/content;
}
这将正确地查找/var/www/content目录中的文件


快乐的日子。

很遗憾,我遇到了另一个这种情况,我的解决方案在这种情况下似乎不起作用: