记录nginx一次正则表达式使用错误导致的问题

location ~* /api/(blade-.*)|(ad-[0-9a-z]*-service)/  {  
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_buffering off;
           rewrite ^/api/(.*)$ /$1 break;
           proxy_pass http://fad_gateway;
}
         location ~* ^/fad-ssp/api/(blade-.*)|(ad-[0-9a-z]*-service)/ {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_buffering off;
          rewrite ^/fad-ssp/api/(.*)$ /$1 ;
           proxy_pass http://ssp_gateway;
}

使用请求:
/api/balde-a/123
/fad-ssp/api/balde-a/123 ,无论怎么请求都匹配到了第一个location , 是因为
第一个location 的或者用错了|, 导致
/api/(blade-.)|(ad-[0-9a-z]-service)/
成了2个条件, 第一个不匹配, 就会导致第二个匹配.
下面的location根本没有用到.正确的写法如下

location ~* /api/(blade-.|ad-[0-9a-z]*-service)/  {  
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_buffering off;
           rewrite ^/api/(.*)$ /$1 break;
           proxy_pass http://fad_gateway;
}
         location ~* ^/fad-ssp/api/(blade-.*)|(ad-[0-9a-z]*-service)/ {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_buffering off;
          rewrite ^/fad-ssp/api/(.*)$ /$1 ;
           proxy_pass http://ssp_gateway;
}

你可能感兴趣的:(记录nginx一次正则表达式使用错误导致的问题)