![nginx 有没有办法代理任何 url?](https://linux22.com/image/742530/nginx%20%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E4%BB%A3%E7%90%86%E4%BB%BB%E4%BD%95%20url%EF%BC%9F.png)
我想要一个这样的 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;
}