当前位置:首页 > 技术文章 > 正文内容

Nginx重写规则(2) nginx中地址重写有哪些选项

arlanguage5个月前 (12-11)技术文章53

需求:研发提出了一些路由跳跃的要求。
解决问题:在特殊情况下,如果业务和研发无法快速处理,则需要运维快速跳转来解决临时问题并避免出现较大的漏洞。

Nginx重写规则

案例一:
临时将请求路径/colorv1/getcolorv1 的请求转发到 v2,且带着问号后面的参数 :
location ~ ^/(.)/(.)/colorv1/getcolorv1$ {
proxy_pass http://category-color-api/$1/$2/colorv2/getcolorv2?$args;
}
案例二:
任意开头和结尾的uri,重定向至"http://test.jenkins.com/jenkins"
location / {
rewrite ^/(.*)$ http://test.jenkins.com/jenkins;
}
location /jenkins {
proxy_pass http://127.0.0.1:8080/jenkins;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
}
案例三
如果访问的URL以.sh .bash 结尾,返回状态码403
location ~ .*.(sh|bash)?$ {
return 403;
}
案例四
nginx 多判断条件语句如何实现? 比如,同时满足2个条件的请求,才转发。
nginx的配置中不支持if条件的逻辑中包含&& 或 || 的运算 ,而且不支持if的嵌套语法;
否则会报错误:nginx: [emerg] invalid condition; 对此情况我们可以用变量的方式来实现。
如: 请求到/color 的访问,请求方法是post,且refer 为abc.com;返回200:且显示内容{"code": 1, "msg": "发布成功"}, 其他不满足这两个条件的请求,转发到gateway;
location ~ /color$ {
set $post 0; ##定义变量
if ($request_method ~* "POST") {
set $post "${post}1";
}
if ($http_referer ~* "abc.com") {
set $post "${post}2";
}
if ($post = "012") {
return 200 '{"code": 1, "msg": "发布成功"}';
}
proxy_pass http://$gateway/a-b-api$request_uri;
}
案例五
禁止Scrapy等工具和UA为空的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient|^$)) {
return 403;
}
附:nginx配置完成之后,curl常用验证方法
当我们做了一些条件的限制,在本地curl验证通过方可上线:
-H "referer:abc" // 设置referer
-A "okhttp/3.12.0" // 设置请求 http_user_agent
-X POST //请求方法post
-d ‘{}’ //请求参数
curl -H "referer:" -A "okhttp/3.12.0" -X POST -d '{"user": "admin", "passwd":"123456

78"}' http://test.abc.com/1/7.3/color?client=064bfc8ch577e5f6


以上是云网时代小编关于Nginx重写规则的分享,希望能对大家有所帮助,云网时代为大家提供专业的深圳服务器租用,深圳服务器托管,深圳主机租用,云服务器租用等服务器资源,更多详情欢迎访问云网时代官网(www.szicp.com)了解。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/70.html

标签: nginx if 语法
分享给朋友:

“Nginx重写规则(2) nginx中地址重写有哪些选项” 的相关文章

一个比 Nginx 还简单的 Web 服务器

企业级的 Web 服务器非常多,Nginx、Tomcat、Apache、IIS、FastAPI、Flask 等。今天松哥再给大家介绍一个开源的 Web 服务器,这款服务器具备自动 HTTPS 功能和高度可配置性,它的名字是:Caddy。Caddy 是一个 Go 编写的 Web 服务器,类似于 Ngi...

windows下的nginx安装和使用

.1 去官网下载相应的安装包:http://nginx.org/en/download.html1.2 解压后进入PowerShell(按住“shift”+“鼠标右键”)窗口,进入到nginx目录,输入start nginx.exe 进行nginx的安装安装成功后,在“任务管理器”中会显示“ngin...

在AWS上组合使用ELB和Nginx Plus获得更多特性

使用AWS的客户经常问我们,对于负载均衡,到底是使用AWS的ELB还是Nginx Plus?Amazon曾经发布了一个白皮书来说明如何在AWS上配置Nginx Plus。本文将聚焦在选择Nginx Plus或者ELB时需要考虑的因素方面,也会讨论一些更适合于组合使用Nginx Plus和ELB的情形...

提升网站性能开发的10个技巧 提升网站性能开发的10个技巧是什么

随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键。高度联结的世界意味着用户对网络体验提出了更严苛的要求。假如你的网站不能做到快速响应,又或你的App存在延迟,用户很快就会移情你的竞争对手。以下为大家总结10条有关性能提升的经验,以供参考:1. 采用反向代理服务器(Rever...

常见nginx配置文件的主上下文指令有哪些?

Nginx 由模块组成,这些模块由配置文件中指定的指令(directive)来控制。指令被分为简单指令和块指令。简单指令由名称和用空格分隔的参数组成,并以分号 (;) 结尾。块指令与简单指令具有相同的结构,但是在分号的位置,它以一组用大括号 ({ 和 }) 括起来的额外指令结束。如果块指令可以在大括...

linux系统安全,多人共用服务器,防止别人干‘坏事’

我们知道,在开发一个应用的过程中,需要涉及代码、操作系统、网络和数据库等多个方面。所以,只是了解代码安全肯定是不够的,我们还需要了解常见的基础环境和工具中的安全机制,学会通过正确地配置这些安全机制,来提升安全保障。谈到 Linux,我相信你每天都在使用 Linux 进行各种开发和运维操作。但是,大多...