nginx rewrite重定向

孙龙 程序员 / 2025-01-25 / 原文

1.Rewrite基本概述

1.什么是rewrite
Rewrite主要实现url地址重写,以及地址重定向,就是将用户请求web服务器的地址重新定向到其他URL的过程。


2.Rewrite使用场景

地址跳转:www.360buy.com--->www.jd.com
协议跳转: http://oldbey.com--->https://oldboy.com
静态:动态url---->静态url 防止url暴露网站路径(目录结构)

blog.oldboy.com/index,php?product=linux&page=01 ==rewrite==> blog.oldboy.com/linux/page01
其他跳转需求:seo 需求

 

nginx变量官方文档

http://nginx.org/en/docs/

if用法


Syntax:if(condition){...}
Defau7t: -
Context:server, locationl

if () {
满足条件后执行指令
}
#主要应用场景配合各种nginx变量(内置/手动创建)判断。…."
#常用变量

 

 

 

 

 案例02:过滤Nginx请求中包含a1=3526的http请求到10.16.3.5的8080端口处理

re.oldboy.com?a1=3526&a2=666&a3=9999
$host
$requst _uri

if( $request_uri ~* 'a1=3526' ){
    proxy_pass http://10.16.3.5:8080;
}

$request_method 请求方法
$request_uri   请求的uri
$status        
用于取出http请求报文中的内容
$http_
用于取出http响应报文中的内容
$sent_http_
1.使用方法选择你要取出的内容
2.判断是请求还是响应
3. 小写,减号变成下划线
$http_user_agent
User-Agent

 

 

set命令

set $oldboy "idao996";
return 200  $o1dboy;

#案例03:用户
用户请求 rewrite.oldboy.com.cn 用户访问 /code/rewrite/cn/index.html o1dboy cn
用户请求 rewrite.oldboy.com.jp 用户访问 /code/rewrite/ip/index.htm1 oldboy jp

 return语法

 

 #需求1: 如果用户使用ie浏览器访问rewrite.oldboy.com 则返回值字符串.

 

 #需求3:如果用户使用ie浏览器访问rewrite.oldboy.com,则直接跳转到o1dboyedu.com

 

rewrire功能

  

 简单案例1:

 

 

 

 

 

案例讲解:

##需求1:根据用户浏览器请求头中携带的语言调度到不同的页面

 

##需求2:用户通过手机设备访问,ur1.o1dboy.com 跳转至ur1.oldboy.com/m##

 

需求3:用户通过手机设备访问ur1.0ldboy.com 跳转至m.etiantian.org

 

 

#小结:
跳转方式###1. if+rewrite/return###2.if+nginx变量
持林扑3.set 设置变量
###4.rewrite/return 跳转

 

##需求4:用户通过http协议请求,能自动跳转至https协议

 

##需求5: 网站维护过程中,希望用户访问所有网站重定向至一个维护页面

##需求6:当网站遇到403 404 502 等错误时,自动跳转至临时维护的静态页 https://404.life

 

 #需求7:公司网站在停机维护时,指定的ip能够正常访问,其他的ip跳转到维护页

 

 

rewrite_log开启

 

 

论坛rewirei重写案例