proxy_redirect支持将返回头(response header)中的Location内容进行替换。请求头中的Location字段是302跳转的地址,浏览器会自动跳转到该字段配置的地址。
server { listen 443 ssl; server_name xyz.test.com; ssl_certificate cert/_test_com.pem; ssl_certificate_key cert/_test_com.key; location / { proxy_redirect ~^http://192.168.1.100/(.*) https://xyz.test.com/$1; proxy_pass http://192.168.1.100/; } }
通常反向代理后,原网站的一些302跳转地址还是原来代理的地址(本文中指192.168.1.100),此时如果不想改动代码配置,可通过给nginx增加proxy_rediret配置,来替换location中的地址。
如原location为:http://192.168.1.100/index.html,可配置:
proxy_redirect ~^http://192.168.1.100/(.*) https://xyz.test.com/$1;
配置后,访问后得到的地址会是:https://xyz.test.com/index.html。其中“~^”是使用正则的标志,“(.*)”表示其他内容,nginx自动填充到后面对应的“$1”中,如果有多个“(.*)”,则依次填写“$1”,“$2”,依次类推。
发表回复