转发申请时须要两个性能, 一个是去掉 querystring 上特定的字段, 一个是替换掉一个字段的值.

参考两篇文章失去一个可用的计划,

https://itecnotes.com/server/...
https://zzyongx.github.io/blo...

次要的思路是通过正则, 对 $args 重复进行替换, 失去本人想要的后果,

upstream myhost {  server myupstream.com:443;}# 强制 log 输入到 stdoutaccess_log /dev/stdout;error_log /dev/stderr info;server {  listen 5555;  location /my/api {    # 目前接口都转发到该域名    set $target_host "myupstream.com";    # set $target_host REPLACED_HOST;    set $target_data "REPLACED_DATA";    # set $target_data "dev";    # 正则解决的不是数据结构, 各种组合须要手动遍历    # 去掉后边的 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;    }    # 革除后设置一个指定一个参数    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 转 HTTPS 用    proxy_ssl_server_name on;    set $args "$args&myData=$arg_myData";    # 调试用    # 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, 然而批改了只会减少, 而不是替换. 间接减少可能呈现两个 myData 的申请, 不能保障服务器解析和解决都是对的. 所以应该是先革除, 再本人加上.

性能不难, 调试时报错不够通明, 一搬用 return 200 "content"; 强行返回查看. 其余看不到的两头过程只能尽量抓进去看了.