Nginx转发需求querystring转写示例解析

 更新时间:2023年08月02日 09:50:02   作者:题叶  
这篇文章主要为大家介绍了Nginx转发需求querystring转写示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

转发请求时需要两个功能

  • 一个是去掉 querystring 上特定的字段
  • 一个是替换掉一个字段的值

参考两篇文章得到一个可用的方案

https://itecnotes.com/server/...

https://www.jb51.net/server/2939864s5.htm

$args 反复进行替换

主要的思路是通过正则, 对 $args 反复进行替换, 得到自己想要的结果,

upstream myhost {
  server myupstream.com:443;
}
# 强制 log 输出到 stdout
access_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"; 强行返回查看. 其他看不到的中间过程只能尽量抓出来看了.

以上就是Nginx querystring转写示例解析的详细内容,更多关于Nginx querystring转写的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx 流量控制/限流的具体实现示例

    Nginx 流量控制/限流的具体实现示例

    限流是一种流量控制手段,用于限制单位时间内可以通过系统的请求数或连接数,本文主要介绍了Nginx流量控制/限流的具体实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • nginx重写和重定向关系与配置方式

    nginx重写和重定向关系与配置方式

    这篇文章主要介绍了nginx重写和重定向关系与配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • nginx location指令(匹配顺序匹配冲突)实战示例详解

    nginx location指令(匹配顺序匹配冲突)实战示例详解

    这篇文章主要介绍了nginx location指令(实战示例匹配顺序匹配冲突)详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Nginx 转发匹配规则的实现

    Nginx 转发匹配规则的实现

    这篇文章主要介绍了Nginx 转发匹配规则的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Nginx启动成功却无法访问网页的问题分析和解决方案(完整的排除方案)

    Nginx启动成功却无法访问网页的问题分析和解决方案(完整的排除方案)

    我是用的阿里云的服务器,所以我的问题就在于阿里云服务器必须单独开端口,在找到这个问题之前,我已经把所有能试的方法试过了一遍都没有问题,在增加端口之后直接成功了,如果你也遇到了这样的问题,就和我一起排除吧
    2023-12-12
  • 一些优化Nginx服务器的技巧简介

    一些优化Nginx服务器的技巧简介

    这篇文章主要介绍了一些优化Nginx服务器的技巧简介,包括对HTTP模块和Events模块的配置建议,需要的朋友可以参考下
    2015-06-06
  • Nginx反向代理多域名的HTTP和HTTPS服务的实现

    Nginx反向代理多域名的HTTP和HTTPS服务的实现

    这篇文章主要介绍了Nginx反向代理多域名的HTTP和HTTPS服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • nginx配置访问图片路径以及html静态页面的调取方法

    nginx配置访问图片路径以及html静态页面的调取方法

    这篇文章主要介绍了详解nginx配置访问图片路径以及html静态页面的调取方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • Nginx配置缺少导致CSS不起作用的问题解决

    Nginx配置缺少导致CSS不起作用的问题解决

    本文将分享一个常见的问题Nginx配置缺少导致的CSS不起作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • nginx配置多个前端项目实现步骤

    nginx配置多个前端项目实现步骤

    本文主要介绍了nginx配置多个前端项目实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论