灵感来自:https://my.oschina.net/jastme/blog/528541

这是最近玩微服务架构遇到的一个情况,因为Spring Boot 1.5的网关不支持websocket的转发,所以我使用了Nginx作为最外层的网关,单独转发websocket(rest api还是走apigateway)。同时用Nginx部署静态web客户端。

但是随着功能的扩展,我发现之前配置的Nginx在转发带有中文encode的url时,会将url decode,然后转发给apigateway微服务,这时候spring框架会抛出400异常,无法识别url中的字符。

    location ~ ^/gate/(.*) {
proxy_pass http://127.0.0.1:8081/$1;
}

上面的配置时我之前的配置,Nginx会将gate/后的url decode后再拼接发送给apigateway。

后来受这个帖子(https://my.oschina.net/jastme/blog/528541)的启发,将配置改为如下:

    location ~ ^/gate {
if ($request_uri ~* ^/gate/(.*)$) {
proxy_pass http://127.0.0.1:8081/$1;
}
}

这时,Nginx将不会decode url,直接将url发送给后台的微服务,我的目的也就达到了。

如何避免Nginx将url decode的更多相关文章

  1. thinkphp nginx php-fpm url rewrite 导致 404 错误

    ## thinkphp nginx php-fpm url rewrite 导致 404 错误 之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在 ...

  2. nginx的URL重写应用实例

    1,NGINx的URL重写 NGINX 的URL重写模块用的比较多,主要使用的命令有if rewrite set break 2 if命令 语法如下"" 语法:if(conditi ...

  3. 4.Nginx的URL重写应用

    Nginx的URL重写应用 nginx的URL重写模块是用得比较多的模块之一,所以我们需要好好地掌握运用.常用的URL重写模块命令有if,rewrite,set,break等. if命令 if用于判断 ...

  4. Nginx实现URL重写

    本文利用Nginx实现URL重写,本文使用Nginx与静态页面配合重写URL. 1.准备工作. 结合本文场景,需要安装Nginx. 1.1 关于Linux系统安装Nginx可以参考我的文章---(传送 ...

  5. Nginx中文url出现404问题

    Nginx中文url出现404问题 前提条件检查,如我的系统centos,需要检查系统字符集是不是支持utf-8, 怎么配置可以参考这个帖子 https://www.vpser.net/manage/ ...

  6. (Nginx) URL REWRITE

    URL重写的基础介绍 把URI地址用作参数传递:URL REWRITE 最简单的是基于各种WEB服务器中的URL重写转向(Rewrite)模块的URL转换: 这样几乎可以不修改程序的实现将 news. ...

  7. 简明 Nginx Location Url 配置笔记

    基本配置 为了探究nginx的url配置规则,当然需要安装nginx.我使用了vagrant创建了一个虚拟环境的ubuntu,通过apt-get安装nginx.这样就不会污染mac的软件环境.通过vr ...

  8. 使用 Nginx 实现 URL 的重定向

    1. 概述 老话说的好:取乎上,得其中:取乎中,得其下.因此我们不妨把目标定的高一些,去努力,才能得到更好回报. 言归正传,今天我们来聊聊 使用 Nginx 实现 URL 的重定向. 2. 使用 Ng ...

  9. nginx的url重写[rewrite规则和参考]

    本日志内容来自互联网和平日使用经验,整理一下方便日后参考. Nginx Rewrite 相关指令有 if.rewrite.set.return 等. if 的语法 应用于 server 和 locat ...

随机推荐

  1. Day002 Java三大版本

    Java三大版本 Write Once .Run Anywhere JavaSE: 标准版(桌面程序,控制台开发......) JavaME:嵌入式开发(手机,小家电.......) JavaEE:E ...

  2. Win10安装Ubuntu子系统(WSL)

    一:设置子系统环境 关闭所有运行的程序,打开 控制面板→卸载程序→启用或关闭windows功能→勾选上适用于Linux的windows子系统 ,然后确定,完成会提示重启电脑,确定重启,等重启电脑后在操 ...

  3. 【Bootstrap5】精细学习记录

    [Bootstrap5]精细学习记录 Bootstrap模板 <!DOCTYPE html> <html> <head> <title>Bootstra ...

  4. Linux Limit相关内容设置大全(值得收藏)

    目录 一. /etc/security/limits.conf 详解 /etc/security/limits.conf 配置解析 /etc/security/limits.d/目录 二. ulimi ...

  5. Scanner, BufferedReader, InputStreamReader 与ACM模式输入

    Scanner, BufferedReader, InputStreamReader 与ACM模式输入html { -webkit-print-color-adjust: exact } * { bo ...

  6. 痞子衡嵌入式:串行NOR Flash的Continuous read模式下软复位后i.MXRT无法启动问题解决方案之RESET#

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT上使能NOR Flash的Continuous read模式在软复位后无法正常启动问题的解决经验. 前一篇文章 <在i ...

  7. Linux后台执行命令:&和nohup nohup和&后台运行,进程查看及终止

    nohup和&后台运行,进程查看及终止   阅读目录 nohup和&后台运行,进程查看及终止 1.nohup 2.& 3.nohup和&的区别 &:是指在后台运 ...

  8. 转载 https://www.cnblogs.com/bobo-pcb/p/11708459.html

    https://www.cnblogs.com/bobo-pcb/p/11708459.html #### 1 用VMware 15.0+win10企业版 1次安装成功 20200124 2 不要用v ...

  9. Modbus RTU CRC校验码计算方法

    在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算. CRC计算方法是: 1.  加载一值为0XFFFF的16位寄存器,此寄存器为CRC寄存器. 2.   ...

  10. HUAWEI防火墙通过L2TP隧道让外出员工访问公司内网的各种资源

    组网图形 组网需求 企业网络如图所示,企业希望公司外的移动办公用户能够通过L2TP VPN隧道访问公司内网的各种资源. 操作步骤 配置LNS. 1.配置接口IP地址,并将接口加入安全区域. <L ...