Isso não é ideal e seria muito melhor ter um fluxo de trabalho limpo em vez de fazer isso. Mas, por curiosidade, isso pode ser informativo para as pessoas que gostariam de saber se é possível.
Sim, é , usando uma combinação das diretivas error_page
, rewrite
, map
, proxy_intercept_errors
e proxy_redirect
e $upstream_http
var padrão.
Tenha em mente que está indo muito longe do caminho que o nginx foi projetado para ser usado.
map $upstream_http_location $redirect_uri {
"~http://[^/]+/(?<location_uri>.*)$" "$location_uri";
}
upstream origin {
server origin1.com;
}
server {
listen 80;
server_name nginx-front.com;
proxy_set_header Host "origin1.com";
proxy_redirect http://origin1.com/ /;
location ~ ^/hls/(\w+)\.mp4\.m3u8$ {
proxy_pass http://origin/m3ugen/segsrc/$1.mp4;
proxy_intercept_errors on;
error_page 301 302 = @handler;
}
location @handler {
rewrite ^ /$redirect_uri break;
proxy_pass http://origin;
}
}