首页 > 解决方案 > 在自己的域上重写和“托管”网址

问题描述

如果我去网站https://example.com/media/https://google.com/imageurl 我希望 url 在 /media 之后打开网站。

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

它必须留在我的域上,这有效吗?

我尝试了类似的方法,但没有工作:/

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

所以 /media/ 之后的所有内容都将在我自己的域上显示,是否有效?

标签: nginx

解决方案


您想要做的是调用“透明代理”。你不能通过简单的重写来做到这一点。你可以试试这个:

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在配置中使用指令来使用它。


推荐阅读