Nginx – 三、实用代理之proxy_redirect

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”,依次类推。