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转写的资料请关注脚本之家其它相关文章!

相关文章

  • Linux下Nginx安全证书ssl配置方法

    Linux下Nginx安全证书ssl配置方法

    这篇文章主要介绍了linux下nginx服务器配置安全证书的方法,分享下证书的具体安装步骤,有需要的朋友参考下
    2014-01-01
  • 使用Nginx和Lua进行JWT校验介绍

    使用Nginx和Lua进行JWT校验介绍

    大家好,本篇文章主要讲的是使用Nginx和Lua进行JWT校验介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12
  • nginx下部署vue项目的方法步骤

    nginx下部署vue项目的方法步骤

    这篇文章主要介绍了nginx下部署vue项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 同一台服务器安装多个Nginx的方法总结

    同一台服务器安装多个Nginx的方法总结

    在同一台服务器上安装多个nginx完全没有问题,但有些地方是需要注意的,这篇文章为大家整理了一些常会遇到的问题以及解决方法,需要的可以参考一下
    2023-08-08
  • nginx 与后台端口冲突的解决

    nginx 与后台端口冲突的解决

    这篇文章主要介绍了nginx 与后台端口冲突的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • CentOS如何用nginx搭建文件下载服务器

    CentOS如何用nginx搭建文件下载服务器

    Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,这篇文章主要介绍了CentOS用nginx搭建文件下载服务器,需要的朋友可以参考下
    2023-11-11
  • nginx配置教程之add_header的坑详解

    nginx配置教程之add_header的坑详解

    这篇文章主要给大家介绍了关于nginx配置教程之add_header坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • Nginx服务器中location配置的一些基本要点解析

    Nginx服务器中location配置的一些基本要点解析

    这篇文章主要介绍了Nginx服务器中location配置的一些基本要点解析,特别对管理以及查找匹配作出了详细的讲解,需要的朋友可以参考下
    2015-12-12
  • Nginx实现接口限流的方法汇总

    Nginx实现接口限流的方法汇总

    这篇文章主要为大家详细介绍了Nginx实现接口限流的相关方法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11

最新评论