Nginx轉(zhuǎn)發(fā)需求querystring轉(zhuǎn)寫示例解析
轉(zhuǎn)發(fā)請求時需要兩個功能
- 一個是去掉 querystring 上特定的字段
- 一個是替換掉一個字段的值
參考兩篇文章得到一個可用的方案
https://itecnotes.com/server/...
http://www.fzitv.net/server/2939864s5.htm
$args 反復(fù)進(jìn)行替換
主要的思路是通過正則, 對 $args 反復(fù)進(jìn)行替換, 得到自己想要的結(jié)果,
upstream myhost {
server myupstream.com:443;
}
# 強制 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), 各種組合需要手動遍歷
# 去掉后邊的 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è)置一個指定一個參數(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, 但是修改了只會增加, 而不是替換. 直接增加可能出現(xiàn)兩個 myData 的請求, 不能保證服務(wù)器解析和處理都是對的. 所以應(yīng)該是先清除, 再自己加上.
功能不難, 調(diào)試時報錯不夠透明, 一搬用 return 200 "content"; 強行返回查看. 其他看不到的中間過程只能盡量抓出來看了.
以上就是Nginx querystring轉(zhuǎn)寫示例解析的詳細(xì)內(nèi)容,更多關(guān)于Nginx querystring轉(zhuǎn)寫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nginx?location指令(匹配順序匹配沖突)實戰(zhàn)示例詳解
這篇文章主要介紹了nginx?location指令(實戰(zhàn)示例匹配順序匹配沖突)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Nginx 轉(zhuǎn)發(fā)匹配規(guī)則的實現(xiàn)
這篇文章主要介紹了Nginx 轉(zhuǎn)發(fā)匹配規(guī)則的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Nginx啟動成功卻無法訪問網(wǎng)頁的問題分析和解決方案(完整的排除方案)
我是用的阿里云的服務(wù)器,所以我的問題就在于阿里云服務(wù)器必須單獨開端口,在找到這個問題之前,我已經(jīng)把所有能試的方法試過了一遍都沒有問題,在增加端口之后直接成功了,如果你也遇到了這樣的問題,就和我一起排除吧2023-12-12
Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實現(xiàn)
這篇文章主要介紹了Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
nginx配置訪問圖片路徑以及html靜態(tài)頁面的調(diào)取方法
這篇文章主要介紹了詳解nginx配置訪問圖片路徑以及html靜態(tài)頁面的調(diào)取方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。2016-12-12

