rewrite与location Nginx重写功能( 二 )


location / {    proxy_pass http://tomcat_server;} 三、访问重新rewrite3.1rewrite的概述rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向 。rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用 。
例如:http://www.fzr.com/zzj/index.php?id=1&u=str 只对/zzj/index.php重写 。
3.2rewrite 执行顺序如下(1) 执行 server 块里面的 rewrite 指令(2) 执行 location 匹配(3) 执行选定的 location 中的 rewrite 指令语法: rewrite [flag];

  • regex :表示正则匹配规则
  • replacement :表示跳转后的内容
  • flag :表示 rewrite 支持的 flag 标记
###flag标记说明###
  • last :本条规则匹配完成后,继续向下匹配新的location URI规则,一般用在 server 和 if 中
  • break :本条规则匹配完成即终止,不再匹配后面的任何规则,一般使用在 location 中
  • redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址
  • permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 。
四、rewrite 示例4.1基于域名跳转4.1.1 基于域名跳转——操作步骤
现在公司旧域名www.fzr.com有业务需求变更,需要使用新域名www.zzj.com代替,但是旧域名不能废除,需要跳转到新域名上,而且后面的参数保持不变 。
vim /usr/local/nginx/conf/nginx.confserver {    listen       80;    server_name  www.fzr.com;                                        #域名修改    charset utf-8;    access_log  /var/log/nginx/www.fzr.com-access.log;     #日志修改    location / {                                                    #添加域名重定向        if ($host = 'www.fzr.com'){                                  #$host为rewrite全局变量,代表请求主机头字段或主机名            rewrite ^/(.*)$ http://www.zzj.com/$1 permanent;        #$1为正则匹配的内容,即域名后边的字符串        }        root   html;        index  index.html index.htm;    }}echo "192.168.10.10 www.fzr.com www.zzj.com" >> /etc/hostssystemctl restart nginx                 #重启服务浏览器输入模拟访问 http://www.fzr.com/test/index.html会跳转到www.zzj.com/test/index.html,查看元素可以看到返回301,实现了永久重定向跳转,而且域名后的参数也正常跳转4.1.2 实例操作:基于域名跳转
(1)修改主配置文件

经验总结扩展阅读