国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

nginx 配置$Query String

2024-06-28 16:01:26
字體:
來源:轉載
供稿:網友

實際開發中經常有根據請求參數來路由到不同請求處理者的情況,根據POST請求參數需要些nginx插件,這里主要簡單介紹下如何根據GET參數來路由。

1、location進行路徑

最常見的是通過location進行路徑匹配的時候,沒辦法是用正則表達一起捕獲這個路徑和querstring的。那么我想真的URL里面的Query String進行不同的rewrite,應該如何處理呢?答案就是$arg變量。Nginx里面$query_string 與$args相同,存儲了所提交的所有$query_string;比如&p=2887&q=test如果想要在nginx里面單獨訪問這些變量。可以這樣比如$p變量可以這樣訪問 $arg_p

2、rewrite:

需求用到rewrite 其中有一個是要把a.php?id=2重定向到b-2.html開始簡單的寫為rewrite "^/a(.*)?(.*)$"  /b-$2.html  permanent;總是不能正確的301到b-2.html查資料發現

rewrite只能針對請求的uri進行重寫,/a.php問號后面的是請求參數,在nginx用$query_string表示,直接寫這樣的一條重寫肯定不會正確匹配,因為rewrite參數只會匹配請求的uri,在寫重寫的時候需要把$query_string變量追加到重寫的uri后面,為了防止uri中的參數追加到重寫后的uri,可以在后面加個問號:

if ($query_string ~ "id=(.*)") {    set  $id  $1;    rewrite ^/a.php$ /b-$id.html? permanent;}

【示例1】

比如我們希望訪問http://192.168.71.51:6061/do1.aspx?t=1212&c=uplog當url中的參數c為config或uplog的時候(忽略大小寫)我們路由到其他地方:

下面是用這樣一個實例講述一下。

首先增加一個upstream:

……upstream other {      server 192.168.71.41:2210;     }……

在location中加入判斷:

……location / {        if ( $query_string ~* ^(.*)c=config/b|uplog/b(.*)$ ){         PRoxy_pass                  http://other;        }……【示例2】要求是 如果請求中的$query_string包含"q=數字",301重新定向到首頁交由index.php處理。否則只是301重新定向到首頁。

location ~* ^/wap/ {#               if ( $http_user_agent ~* "(MSIE|bot|Spider|Slurp)" ) {#               }                if ($args ~* "p=/d+$") {                        rewrite ^ $scheme://$host/?p=$arg_p? permanent;                }                #Rewrite 后面帶一個?表示在重定向中使用query_tring                rewrite ^/(.*)$ $scheme://$host/<del datetime="2012-01-24T14:18:20+00:00">?</del> permanent; }注:關于rewrite后面的問號,其作用是去除后面的qrerystring,不加?的話,就是這樣的比如原來的query_string是p=2887,不加問號的話 是重新定向到http://ihipop.info/?2887&p=2887 多了一個&p=2887這樣產生的 URI 不是很美觀。

【示例3】

    location / {        if ( $query_string ~* "p=/d+$" ) {               proxy_pass                  http://www.ifeng.com;        }        proxy_pass                  http://www.baidu.com;    }通過如上配置,當訪問nginx時,如果后面帶有p=數字的參數(http://10.153.140.42/?p=1),就會跳轉到ifeng,否則跳轉到baidu。


上一篇:aws 應對 retire

下一篇:Gitlab安裝

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹巴县| 宁安市| 商河县| 汤阴县| 吴川市| 双桥区| 泰州市| 疏勒县| 昭通市| 辽宁省| 班玛县| 静乐县| 溧阳市| 蒲江县| 资阳市| 庄浪县| 甘谷县| 雅安市| 赣榆县| 浪卡子县| 汉阴县| 舒城县| 六盘水市| 朔州市| 铜川市| 尤溪县| 麻栗坡县| 长春市| 双辽市| 将乐县| 淳安县| 宜兰县| 建水县| 东至县| 伊宁市| 沧源| 浙江省| 莱阳市| 临沧市| 英山县| 咸阳市|