Nginx轉(zhuǎn)發(fā)需求querystring轉(zhuǎn)寫示例解析
轉(zhuǎn)發(fā)請(qǐng)求時(shí)需要兩個(gè)功能
- 一個(gè)是去掉 querystring 上特定的字段
- 一個(gè)是替換掉一個(gè)字段的值
參考兩篇文章得到一個(gè)可用的方案
https://itecnotes.com/server/...
http://chabaoo.cn/server/2939864s5.htm
$args 反復(fù)進(jìn)行替換
主要的思路是通過正則, 對(duì) $args
反復(fù)進(jìn)行替換, 得到自己想要的結(jié)果,
upstream myhost { server myupstream.com:443; } # 強(qiáng)制 log 輸出到 stdout access_log /dev/stdout; error_log /dev/stderr info; server { listen 5555; location /my/api { # 目前接口都轉(zhuǎn)發(fā)到該域名 set $target_host "myupstream.com"; # set $target_host REPLACED_HOST; set $target_data "REPLACED_DATA"; # set $target_data "dev"; # 正則處理的不是數(shù)據(jù)結(jié)構(gòu), 各種組合需要手動(dòng)遍歷 # 去掉后邊的 extraKey if ( $args ~* ^(.*)&extraKey=[\w\d]+(.*)$ ) { set $args $1$2; } # 去掉開頭的 extraKey if ( $args ~* ^extraKey=[\w\d]+(.*)$ ) { set $args $2; } # 清除 myData if ( $args ~* ^(.*)&myData=\w+(.*)$ ) { set $args $1$2; } # 清除開頭的 myData if ( $args ~* ^myData=\w+(.*)$ ) { set $args $1; } # 清除后設(shè)置一個(gè)指定一個(gè)參數(shù) set $arg_myData "$target_data"; proxy_set_header Host $target_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Real-IP $remote_addr; proxy_pass_request_headers on; # HTTP 轉(zhuǎn) HTTPS 用 proxy_ssl_server_name on; set $args "$args&myData=$arg_myData"; # 調(diào)試用 # return 200 "$target_host/api$uri$is_args$args&myData=$arg_myData"; proxy_pass https://myhost/api$uri$is_args$args; } }
注意 $arg_myData
雖然是從 querystring 解析出來的 field, 但是修改了只會(huì)增加, 而不是替換. 直接增加可能出現(xiàn)兩個(gè) myData
的請(qǐng)求, 不能保證服務(wù)器解析和處理都是對(duì)的. 所以應(yīng)該是先清除, 再自己加上.
功能不難, 調(diào)試時(shí)報(bào)錯(cuò)不夠透明, 一搬用 return 200 "content";
強(qiáng)行返回查看. 其他看不到的中間過程只能盡量抓出來看了.
以上就是Nginx querystring轉(zhuǎn)寫示例解析的詳細(xì)內(nèi)容,更多關(guān)于Nginx querystring轉(zhuǎn)寫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nginx 讓users有權(quán)限啟動(dòng)的兩種方法
這篇文章主要介紹了nginx 讓users有權(quán)限啟動(dòng)兩種方法的相關(guān)資料,需要的朋友可以參考下2017-05-05詳解Nginx反向代理實(shí)現(xiàn)會(huì)話(session)保持的兩種方式
這篇文章主要介紹了詳解Nginx反向代理實(shí)現(xiàn)會(huì)話(session)保持的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08centos 7.0 使用Nginx部署flask應(yīng)用教程
這篇文章主要介紹了centos 7.0 使用Nginx部署flask應(yīng)用教程,需要的朋友可以參考下2017-12-12詳解用nginx+WordPress搭建個(gè)人博客全流程
這篇文章主要介紹了詳解用nginx+WordPress搭建個(gè)人博客全流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04使用nginx動(dòng)態(tài)轉(zhuǎn)換圖片大小生成縮略圖
這篇文章主要介紹了使用nginx動(dòng)態(tài)轉(zhuǎn)換圖片大小生成縮略圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問實(shí)例詳解
這篇文章主要介紹了Nginx 合并請(qǐng)求連接且加速網(wǎng)站訪問實(shí)例詳解,瀏覽器的并發(fā)請(qǐng)求數(shù)目限制是針對(duì)同一域名的,同一時(shí)間針對(duì)同一域名下的請(qǐng)求有一定數(shù)量限制,超過限制數(shù)目的請(qǐng)求會(huì)被阻塞,需要的朋友可以參考下2019-07-07Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)
本文主要介紹了Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07