nginx 有没有办法代理任何 url?

nginx 有没有办法代理任何 url?

我想要一个这样的 API:

my-proxy-server.com/http://example.com/foo.pdf

流式传输来自http://example.com/foo.pdf. 注意在这种情况下http://example.com/foo.pdf仅仅是一个例子,可以是任何 pdf url。

因此在 nginx.conf 中 sudo 代码:

    location ~* ^/(?<urlpath>.*)$ {
      proxy_pass $urlpath;
    }

使用 nginx + 其他插件可以实现吗?正在寻找一些实现此目的的指针。

答案1

它被覆盖这里. 本质上你只需要使用proxy_pass,例如:

location ~* ^/(?<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;
}

相关内容