Rewrite相关

if

判断请求的uri 是否包含设定的字符内容是否满足条件,如果满足条件则执行,if是顺序判断,只要满足一个判断条件,剩下的if则不会执行,反之则继续执行。
在这里插入图片描述

例:

if	($request_uri ~* 'a1=\d{4}') 
             proxy_pass	http://10.16.3.5:8080;
             如果请求的uri中包含a1=\d{4} ,则跳转到

set

设置变量 满足条件后设置响应变量,http后面跟请求类型以及包含在类型中的名字,如: 李家屯:李四。可以在服务端查看请求的客户端是以什么 浏览器浏览的/var/log/nginx/access.log

		if ( $http_host ~* "zh" ) {
		# 如果请求的域名中有 zh    host=域名
				set $language zh;
		# 设定变量 language=zh
		}
		if ( $http_host ~* "jp" ) {
		# 如果请求的域名中有 jp
				set $language jp;
		# 设定变量 language=jp
		
		rewirte ^(.*)$ http://url.oldxu.com/$language

return

根据if判断,如果满足则 直接跳转 到 自定义的 连接,或返还 自定义的相关文字信息。

#跳转网页
if ( $http_user_agent ~* "MSIE|firefox" ) {
     return 302 https://www.xuliangwei.com;
#跳转文字信息
if ( $http_user_agent ~* "MSIE|firefox" ) {
	return 200 "change something"    
# 直接返还状态码
return 500
# 跳转地址
return 302 "www.baidu.com";

rewrite(重点)

主要用来重写URL或者跳转URL的指令。

break 终止匹配
last 终止当前location的匹配,匹配下一组location
redirect 临时跳转 302
permanent 永久跳转 301

实验案例(重点)

if 匹配,return跳转

  • 设置维护页面
    return ^(.*)$ /wh.html break;

  • 设置外部人员无法访问,但是内部可以访问。
    1.放在server层是全局判断,放在location层是单独判断

set $ip 0;
	if ($remote_addr ~ "10.0.0.1|10.0.08"){
	set $ip 1;
}
设置ip变量等于0,然后交给if判断,如果 来访ip满足判断条件,则将变量改为1,执行余下的location。
	if (set="0"){
			rewirte ^(.*)$ /wh.html break;
    如果判断等于 0 则跳转到 维护页面,location终结。
}

2.如果只需要公司的公网ip访问,那么需要把判断条件写单独的 location 的uri下面

  • 当用户请求遇到异常,将异常状态,跳转到维护页面,@ :内部跳转。
error_page 404 403 502 = @tempdown;
location @tempdown	{
locatio 是指定位置的意思
			rewrite	^(.*)$ /wh.html break;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值