在自己的域上重写和“托管” URL

时间:2018-12-26 11:18:43

标签: nginx

如果我转到网站https://example.com/media/https://google.com/imageurl 我希望该URL在/ media之后打开网站。

所以我想打开https://google.com/imageurl,但不想完全重定向。

它必须留在我的域内,能正常工作吗?

我尝试了类似的方法,但是不起作用:/

rewrite ^/media/(.*).(png|jpg|gif) $1.$2 ;

那么/ media /之后的所有内容都会在我自己的域中显示,这是可行的吗?

1 个答案:

答案 0 :(得分:0)

您要执行的操作称为“透明代理”。您无法通过简单的重写来做到这一点。您可以尝试以下方法:

location ~ ^/media/(?<proto>https?:)/+(?<domain>[^/]+)(?<subreq>/.+\.(?:png|jpg|gif))$ {
    proxy_ssl_server_name on;
    proxy_set_header Host $domain;
    proxy_pass $proto//$domain$subreq;
}

或者这个:

location ~ ^/media/(?<proto>https?:)/+(?<domain>[^/]+)(?<subreq>/.+\.(?:png|jpg|gif))$ {
    proxy_ssl_server_name on;
    proxy_set_header Host $domain;
    rewrite .* $subreq break;
    proxy_pass $proto//$domain;
}

您还需要在配置中使用resolver指令来使用它。