重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

nginxrewrite规则(二)-创新互联

需求:研发提出一些路由跳转需求。
解决问题:特殊情况,业务及研发无法快速处理的时候,需要运维快速跳转,解决临时问题,避免更大的bug。

我们提供的服务有:成都做网站、成都网站建设、微信公众号开发、网站优化、网站认证、伊美ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的伊美网站制作公司
案例一:

临时将请求路径/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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:nginxrewrite规则(二)-创新互联
文章来源:http://cqcxhl.com/article/discpj.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP