ngnix 转发 自动进行url转码解码的问题

nginx | 2020-03-02 13:35:27

1.关于url转码

对于url地址,我们经常会使用URLEncoder或encodeURI等方式将url来转码,目的是防止访问和存储的问题。

2.ngnix自动转码的问题

在ngnix转发时,ngnix会自动对url解码和转码,那这样会有什么问题?

假如有个文件:a?b.html

因为有特殊符号?,文件名不能有问号,所以需要url转码后存储

a?b.html 转码后a%3Fb.html

磁盘存储的文件名是转码后的a%3Fb.html。

那么问题来了 访问这个文件 用什么链接?

http://bcxw.net/a?b.html  会请求服务器文件a

http://bcxw.net/a%3Fb.html  会请求服务器a?b.html

可是我存的是a%3Fb.html,所以是访问不到这个文件的。

 

除非对a%3Fb.html再转码进行访问,才能访问到 a%3Fb.html。

 

那么ngnix如何禁止自动转码?让我访问的链接和我存储的文件名是一致的。

 

登录后即可回复 登录 | 注册
    
  • houyong
    houyong

    这就好像一个两层陷阱,需要仔细思考才能找出问题,但往往处理问题最简单最直接就好了

  • houyong
    houyong

    我找了很久,ngnix没有取消转码的配置,我又想了很久,这不是ngnix的问题,你的客户端会自动转码,而不是ngnix转码,最后的解决方案就是,把有特殊字符的文件名的特殊字符去掉再存储,只有这样才能很好解决问题!

关注编程学问公众号