灵感来自: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发送给后台的微服务,我的目的也就达到了。

最新文章

  1. ASP.NET Button、ImageButton、LinkButton、HyperLink区别
  2. 高级java必会系列二:多线程经常使用的3个关键字:synchronized、ReentrantLock、volatile
  3. visual studio错误解决 [error LNK1104: 无法打开文件“gdi32.lib”]
  4. 封装ios静态库碰到的一些问题(一)
  5. lua二进制操作函数
  6. myeclipse6.5中使用Alt+/不自动提示的修改
  7. java编译错误:varargs 方法的非 varargs 调用
  8. Linux 终端访问 FTP 及 上传下载 文件
  9. Wininet笔记一
  10. Maven创建工程项目如何下载所需要的jar包
  11. Ubuntu下配置tftp服务
  12. ReentrantLock与synchronized的差别
  13. js中()()问题
  14. 应用服务器GC回收常见问题总结
  15. [JavaScript] requireJS基本使用
  16. DB2修改自增主键起始值
  17. cgi、fastcgi及php-fpm分别是什么
  18. 【Java并发编程六】线程池
  19. InstallShield 读注册表函数 RegDBGetKeyValueEx ()执行失败
  20. Git 查看提交历史(分布式版本控制系统)

热门文章

  1. spring-boot-maven-plugin not found的解决方案
  2. Gridea博客无法载入CSS样式的解决办法
  3. PhpStorm 配置本地文件自动上传至服务器
  4. 在@Data注释lombok上使用继承警告等于/ hashCode(Warning equals/hashCode on @Data annotation lombok with inheritance)
  5. JavaWeb——JDBC
  6. 免费JS甘特图组件dhtmlxgantt
  7. vue2.0与3.0响应式原理机制
  8. linux使用createrepo制作本地yum源
  9. inux软件安装管理之——dpkg与apt-*详解
  10. dpkg -S /usr/lib/mate-notification-daemon/mate-notification-daemon