nginx转发重定向配置

一、问题背景

前端使用vue框架搭建单应用页面,生成的url地址类似http://www.example.com/test/index.html#/,将此地址传到Ios客户端后发现,由于客户端识别"#"为特殊字符,所以会转码为"%23"导致访问错误。

二、解决方案与选择

1.客户端将"#"的特殊字符处理去掉,缺点是无法兼容旧版本,只能保证新版本解决此问题

2.使用vue的history模式(官方文档:https://router.vuejs.org/zh-cn/essentials/history-mode.html),缺点是整体改动较大。

3.使用nginx的配置进行转发重定向

经过几种解决方式的比对,选择通过nginx进行url的重定向的处理方法:将客户端访问url修改为http://www.example.com/test/index.html/,重定向到http://www.example.com/test/index.html#/的目标地址。

三、nginx的location配置规则记录

location匹配的是nginx的$request_uri变量;

语法规则: location [=|~|~*|^~] /uri/ { … }

= 开头表示精确匹配

^~ 开头,注意这不是一个正则表达式--它的目的是优于正则表达式的匹配。如果该location是最佳匹配,则不再进行正则表达式检测。

~ 开头表示区分大小写的正则匹配;

~* 开头表示不区分大小写的正则匹配

/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到

!~ && !~*:表示区分大小写不匹配的正则和不区分大小写的不匹配的正则

匹配顺序:

  1. "="前缀指令匹配,如果匹配成功,则停止其他匹配
  2. 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)
  3. 正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配
  4. 如果第三步中有匹配成功,则使用该结果,否则使用第二步结果

常用参数说明

1.root:将请求映射到服务器文件上(定义+$uri)

例:配置root /var/www/html/example/

访问:http://www.example.com/test/index.html

实际访问文件为服务器上的 /var/www/html/example/test/index.html

2.alias:将请求映射到服务器文件上(定义)

例:配置alias /var/www/html/example/

访问:http://www.example.com/test/index.html

实际访问文件为服务器上的 /var/www/html/example/index.html

3.return:返回状态码

例:配置return 200;

访问直接返回状态码200,不经过任何文件(很直接的可以验证是否进入该模块)

4.rewrite:实现url重写以及重定向


未完待续。。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值