day50 nginx 的跳转的return;break;set;方法

day50 nginx 的跳转的return;break;set;方法

1 实践return指令的用法


server{} ----> 定义整个虚拟的主机网站ip:port
location{} -----> ip:port/addr   例如: ip:port/xixix
location{} -----> ip:port/static/

请求A ----> server{location{}} ---> return 200 ;300 ;500;

具体的用法

[root@web-9 conf.d]# cat return.conf 
server {

    listen 22666;
    server_name _;
    root html;

    # 精确匹配,客户端只访问了网页根目录
    location  = / {
        echo "welcome to chaoge linux course.";
    }

    location /test-return {

            # 客户端完全匹配
            if ($http_user_agent = huawei){
              return 200 "agent is  $http_user_agent \n";
            }

            # 限制必须是GET方法
            if ($request_method != GET){

              return 405 "必须是GET方法!其他方法不允许\n";
            }

            # 如果是IE浏览器,就重定向
            if ($http_user_agent ~* IE){
              return 301 http://yuchaoit.cn/cai.jpg;
            }

                        # 没有if条件匹配到
            return 404 "sorry, nothing ....\n";
     }

        # 默认匹配,如果没有匹配到任意内容,跳转到首页 jd.com就是这个做法
        location / {
      return 301 http://yuchaoit.cn/cai.jpg;
        }

        location /ji {
            return 500 "鸡你太美\n";
        }

}

实践return的执行

精准的匹配location

[root@master-61 ~]#curl -I 10.0.0.8:22666/ji
HTTP/1.1 500 Internal Server Error
Server: nginx/1.19.0
Date: Wed, 25 May 2022 03:08:47 GMT
Content-Type: application/octet-stream
Content-Length: 13
Connection: keep-alive

[root@master-61 ~]#
[root@master-61 ~]#
[root@master-61 ~]#curl -I 10.0.0.8:22666/ji/xixixixixi
HTTP/1.1 500 Internal Server Error
Server: nginx/1.19.0
Date: Wed, 25 May 2022 03:09:05 GMT
Content-Type: application/octet-stream
Content-Length: 13
Connection: keep-alive

[root@master-61 ~]#curl  10.0.0.8:22666/ji/xixixixixi
鸡你太美
[root@master-61 ~]#curl  10.0.0.8:22666/ji/xixixixix/haHAHAH
鸡你太美

set 指令

用于在nginx中设置变量,然后可以在配置文件中调用该变量


# 测试用法如下

server {

    listen 22777;
    server_name _;
    root html;
    
    set $my_url http://yuchaoit.cn/data/cai.jpg;

    location /test-set {
        return 301 $my_url;
    }

}

# 测试执行
访问10.0.0.8:22777/test-set/

break 指令

break 是专门用于终止,rewrite的其他的执行的
rewrite 这个url的重写的模块,支持一下的关键字

break;if;return;rewrite;set

这些关键字都可以在server{} location中定义
break的作用是 nginx的代码,执行break后就会停止后续的操作

结合rewrite实际的用法,来看看break的其他的用法

```
server {

        listen 22888;
        server_name _;
        root html;

        location / {

                set $my_website yuchaoit.cn;
                echo "welcome to my website:" $my_website;
                break;

                set $my_name yuchao;
                echo "my name is" $my_name;

        }

}
```


posted @ 2025-04-19 22:35  国家一级冲浪yzk  阅读(20)  评论(0)    收藏  举报