假設我有一個example.com
帶有 nginx 的伺服器。
我想建立一個代理,它將代理傳遞作為請求 URI 或 GET 參數的一部分給出的 URL(它可能包含查詢字串)。
例如,我希望 nginx在發出請求http://www.google.pl/image.png?x=y
時進行解析。GET example.com/proxy/http://www.google.pl/image.png?x=y
我已經嘗試過這樣的事情:
location /proxy {
rewrite /proxy(.*) /$1 break;
resolver 8.8.8.8;
proxy_pass http://$arg_host/$arg_uri?$query_string;
}
也許我想要重定向?假設我想提供位於不同伺服器上的映像,因為它們是我的(在我的網域上)。
答案1
嘗試這個:
location ~ /proxy/(http://.*) {
resolver 8.8.8.8;
proxy_pass http://$1$is_args$args;
}
不需要明確重寫。如果請求行有參數,則$is_args
設為,否則設為空字串,並且將包含請求中的參數(不包括),如果沒有查詢參數,則設為空字串。將匹配包含在位置正規表示式中的 URI 部分。?
$args
?
$1
( ... )