【问题标题】:nginx: how to setup as caching reverse proxy for global URLsnginx:如何设置为全局 URL 的缓存反向代理
【发布时间】:2019-07-13 22:07:12
【问题描述】:

我正在寻找一种方法来设置 nginx 作为反向代理(?)运行,具有缓存但显式获取/重写原始 URL,其中 URL 不是本地服务器,而是任何通用地址。

例如,我想显式缓存/代理 URL。因此,对于像 https://org.url.baz/user/repo/foo 这样的原始 URL,我希望能够通过 nginx 在 my.domain.foo 处缓存所有请求,并带有明确的“缓存请求”,例如

http://my.domain.foo/cache/http://org.url.baz/user/repo/foo

并重写所有后续请求。即,类似于 Internet Archive 的备忘录语法 archive.org/save/org.url.baz

由于我的想法在任何意义上都不是“真正的”反向代理,我猜https://www.nginx.com/resources/wiki/start/topics/examples/reverseproxycachingexample/ 中的示例并不完全适用,但需要大量扩展。

【问题讨论】:

    标签: nginx caching proxy reverse-proxy


    【解决方案1】:

    您正在处理类似this 的内容。

    具体来说:

    location ~* ^/cache/(?<pschema>https?)/(?<phost>[\w.]+)(?<puri>/.*) {
    {
        set $adr $pschema://$phost;
        rewrite .* $puri break;
    
        proxy_pass $adr;
    
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $phost;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect off;
        proxy_connect_timeout 1;
        proxy_intercept_errors on;
        expires 30;
    }
    

    这会将your.example.com/cache/https/org.url.baz/user/repo/foo 代理到https://org.url.baz/user/repo/foo

    请注意,your.example.com/cache/https://org.url.baz/user/repo/foo 可能不是有效的 URL,因此您的 URL 不应在远程网站的协议说明符中包含 ://

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-11
      • 2016-08-17
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      相关资源
      最近更新 更多