nginx做代理时如何修改querystring方法详解

 更新时间:2023年08月02日 09:45:10   作者:zzyongx  
这篇文章主要介绍了nginx做代理时如何修改querystring的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

nginx配置

我们有段nginx配置是这样的:

set $arg_from "1";
if ($host = "inner.domain") {
  set $arg_from "0";
}
set $args "$args&from=$arg_from";

如果请求来自inner.domain域名,就给querystring添加参数from=0,表明是内网过来的(公网入口不会转发host为inner.domain的请求)。这样upstream只需要检查from参数即可判断请求来源,和域名解绑了。

但是这个配置有个bug,如果用户请求时添加 from=0 参数,从公网发请求,querystring变成了 from=0&from=1 ,上面的配置是追加参数,而不是修改参数。那么该如何修复这个bug呢?核心是修改 $args ,很多方法也是围绕这个展开的,但是都不够通用。

修改后配置

最后我也没找到修改 $args 的好办法,但是问题解决了,最后的配置是这样的:

if ($arg_from != "") {
  return 401;
}
set $arg_from "1";
if ($host = "inner.domain") {
  set $arg_from "0";
}
set $args "$args&from=$arg_from";

既然不能修改 $args, 那就禁止用户传 from 参数,曲线救国达到目的。

使用Header

说到底,依赖 querystring 里的参数不是个好主意,最好的方法是使用Header,更加通用。不会有两个同名Header,也不用担心和请求里可能会有的from参数冲突。

set $req_source 1;
if ($host = "inner.domain") {
  set $req_source 0;
}
proxy_set_header X-Req-Source $req_source;

这应该算不上是一种技巧,但是它提醒我,专注于目的,而不是解决问题的手段。

以上就是nginx做代理时如何修改querystring方法详解的详细内容,更多关于nginx代理修改querystring的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx 处理请求并发控制的过程分享

    Nginx 处理请求并发控制的过程分享

    Nginx 作为一款高性能的 Web 服务器和反向代理服务器,在处理请求的并发控制方面有着出色的表现,这篇文章主要介绍了Nginx 处理请求的并发控制的过程,需要的朋友可以参考下
    2024-07-07
  • Nginx 代理与负载均衡详解

    Nginx 代理与负载均衡详解

    这篇文章主要介绍了Nginx 代理与负载均衡详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • nginx部署前端post请求405 not allowed问题解决

    nginx部署前端post请求405 not allowed问题解决

    在配置前端项目的时候遇到了一个post请求405 not allowed,简单记录一下如何配置,这篇文章主要给大家介绍了关于nginx部署前端post请求405 not allowed问题解决方法,需要的朋友可以参考下
    2023-09-09
  • Nginx反向代理出现静态文件404异常处理

    Nginx反向代理出现静态文件404异常处理

    本文主要介绍了Nginx反向代理出现静态文件404异常处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • Nginx内网环境开启https双协议的实现

    Nginx内网环境开启https双协议的实现

    本文主要介绍了Nginx内网环境开启https双协议,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Nginx 中的Rewrite 使用示例详解

    Nginx 中的Rewrite 使用示例详解

    Nginx的rewrite模块提供了强大的URL重写和重定向功能,可以用于实现各种复杂的 URL 处理需求,本文详细介绍了rewrite的命令、语法、含义、环境和示例,希望能够帮助用户更好地理解和使用Nginx的 rewrite功能,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • nginx配置https的双向认证方式

    nginx配置https的双向认证方式

    文章主要介绍了如何配置Nginx双向认证的详细步骤,包括生成证书、配置Nginx等,并提供了个人经验供参考
    2024-11-11
  • nginx做白名单和限流的完整过程

    nginx做白名单和限流的完整过程

    ​ 我们都知道nginx里面是可以用lua脚本做一些稍微复杂些的逻辑处理的,要使用lua脚本需要编译lua解释器,时间有限我直接用了openresty,它集成了lua和nginx,这篇文章主要介绍了nginx做白名单和限流,需要的朋友可以参考下
    2024-02-02
  • Nginx防盗链与服务优化配置的全过程

    Nginx防盗链与服务优化配置的全过程

    由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,下面这篇文章主要给大家介绍了关于Nginx防盗链与服务优化配置的相关资料,需要的朋友可以参考下
    2022-01-01
  • Nginx服务器中的重定向配置参考指南

    Nginx服务器中的重定向配置参考指南

    这里简单整理了一份Nginx服务器中的重定向配置参考指,包括rewrite模块的配置以及301重定向的设置等,需要的朋友可以参考下
    2016-05-05

最新评论