nginx实现内容重定向的两种方式:rewrite和反向代理

第一种:rewrite   更多参考另一个blog

按照常规理解,实现重定向就是要用rewrite来实现,例如demo:

[root@nginx01 ~]# vi /etc/nginx/conf.d/rewrite01.conf
server {
    listen       80;
    server_name  cnblogs.linuxds.com;
    access_log  /var/log/nginx/cnblogs.access.log  main;
    error_log   /var/log/nginx/cnblogs.error.log  warn;
    location / {
    if ($host = 'cnblogs.linuxds.com') {
      rewrite ^/(.*) http://www.cnblogs.com redirect;
    }
  }
}


配置解释:结合if指令来对nginx请求进行判断,若访问http://cnblogs.linuxds.com/index/1.html,即$host = 'cnblogs.linuxds.com' 的时候,进行重定向跳转,重定向至 http://www.cnblogs.com。

使用rewrite重定向,浏览器链接是会发生变化:http://www.cnblogs.com
后缀index/1.html 是没有跟上的

第二种:反向代理
有些场景需要内容重定向到另外一个url, 但是链接保持不变,这时候就可以利用反向代理配置来达到目的。cc/1.html 是不会变的

 location /abc/ {

            proxy_pass http://localhost:8101;
        }
请求 http://myip/abc/cc/1.html 实际请求 http://localhost:8101/abc/cc/1.html 
后缀是不变的


 location /abc/ {

            proxy_pass http://localhost:8101/;
  }
请求 http://myip/abc/cc/1.html 实际请求 http://localhost:8101/cc/1.html 
后缀是不变的