通过Nginx反向代理,重定向链接地址

2023-03-28 15:44:45 浏览数 (2)

对别人的意见要表示尊重。千万别说:“你错了。”——卡耐基

近期遇到个需求,多人协作分享,具体业务这里就不详细介绍了。有一部分业务是需要把分享链接通过公众号、邮箱、短信的方式进行推送,公众号和邮箱都还好 没有字符限制,但短信就会有字符限制,我们使用的阿里的短信服务,通知类型的短信服务是有大概70个字的限制要求,因此咱们的这个链接就不能是全部的链接了,不然一个链接就到了字符限制了,给产品的发挥空间就是0,因此咱们需要把这个链接缩减成极短,怎么做呢?第一想到就是可以使用Nginx的反向代理进行实行。言归正传 直接开始。

原始链接地址:https://baidu.com/c/aFJ@4512 重定向地址:https://baidu.com/share.html#/c/aFJ@4512

以上链接都为虚拟链接。

这样就可以给产品省出一些发挥的空间,当然了上述只是示例,还可以用于其他的业务,举一反三。

Nginx概述

Nginx是一款轻量级的Web服务器和反向代理服务器。它的设计目标是高性能、高并发、低内存占用。因此,Nginx广泛应用于Web服务的负载均衡、反向代理、HTTP缓存以及静态资源服务等场景中。

Nginx具有高度的可扩展性,它可以通过添加模块来实现各种复杂的功能,例如SSL加密、URL重写、请求限流等。

Nginx配置
代码语言:javascript复制
server {
         listen       443 ssl;
         server_name  ~^(test .)?.beta.baidu.cn$;
        location ~ "^/c/([a-zA-Z0-9_]{2,11})"{
            # 重定向到 share.html 页面,并在 URL 后面添加原始 URI
            return 301 $scheme://$http_host/share.html#/c/$1;
        }
}

脚本含义

上述脚本定义了一个Nginx服务器的配置,它监听443端口,并设置了一个server_name模式,用于匹配所有以test.或testtest.开头,以.beta.baidu.cn结尾的请求。

该脚本还定义了一个location模式,用于匹配所有以/c/开头,后面跟着2到11位字母、数字或下划线的请求URI。当匹配到该模式时,Nginx会返回301重定向响应,将请求重定向到surveyList.html页面,并在URL后面添加原始URI中的/c/部分。

这个脚本的作用是将URI重定向到一个指定页面,并将原始URI中的参数传递给该页面。例如,如果请求的URI为/c/abc123,Nginx会将其重定向到/share.html#/c/abc123,保留原始URI中的参数abc123。

Location含义及用法

在Nginx配置文件中,location指令用于定义服务器对请求的响应行为。location指令后面跟着的是一个URI模式,它可以是一个字符串或正则表达式。

当请求的URI匹配到某个location模式时,Nginx就会按照该模式下的配置来处理请求。location指令可以设置很多属性,例如root、proxy_pass、rewrite等。这些属性可以控制Nginx对请求的响应行为,例如返回静态文件、转发请求到其他服务器、重写请求URI等。

其他变量

在上述脚本中,还用到了一些重要的变量,它们包括$scheme、$http_host和$1。

  • $scheme变量:该变量表示请求的协议类型,例如http或https。在上述脚本中,$scheme变量被用于构造重定向URI时,以确保使用与原始请求相同的协议类型。
  • $http_host变量:该变量表示请求的主机名和端口号,例如baidu.com。在上述脚本中,$http_host变量也被用于构造重定向URI时,以确保使用与原始请求相同的主机名和端口号。
  • $1变量:该变量表示正则表达式中第一个括号内匹配的内容。在上述脚本中,$1变量被用于提取URI中的参数,然后将其添加到重定向URI中。

这些变量都是Nginx内置的变量,在配置文件中使用时需要加上"$"符号。它们提供了灵活的配置选项,使得Nginx可以根据不同的请求动态地生成响应结果。

总结

Nginx是一款高性能、高可扩展性的Web服务器和反向代理服务器。location指令和正则表达式是Nginx配置文件中常用的关键字,用于控制Nginx对请求的响应行为。在上述脚本中,我们使用location指令和正则表达式来重定向URI,并使用一些重要的内置变量来构造重定向URI。这些技术可以帮助我们更好地控制Nginx的行为,提高Web服务的性能和可靠性。

0 人点赞