首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向到NGINX中查询参数中的编码url。

重定向到NGINX中查询参数中的编码url。
EN

Unix & Linux用户
提问于 2021-01-07 05:43:02
回答 1查看 2.3K关注 0票数 1

当重定向URL的值使用encodeURIComponent编码时,Nginx不会重定向。

代码语言:javascript
复制
 location /redirect/ {
             return 307 $arg_target_url;
        }

当我从浏览器中输入url时:

代码语言:javascript
复制
mylocalserver.com/redirect/?target_url=example.com%3Fx%3Dy%26z%3Dk

它被重定向到

代码语言:javascript
复制
mylocalserver.com/redirect/example.com%3Fx%3Dy%26z%3Dk

期望是,应该将其重定向到url example.com?x=y&z=k

但是,当$arg_target_url包含普通值时,它会工作。

EN

回答 1

Unix & Linux用户

发布于 2021-01-07 16:13:35

安装nginx和njs脚本语言,请阅读安装说明:nginx: Linux包。确保首先备份配置。

从Debian上的nginx稳定存储库安装nginx-module-njsD2包的最小步骤如下:

代码语言:javascript
复制
echo "deb http://nginx.org/packages/debian $(lsb_release -cs) nginx" |
  sudo tee /etc/apt/sources.list.d/nginx.list

curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

sudo apt update
sudo apt install nginx nginx-module-njs
  1. 将行load_module模块/ngx_http_js_module.so;添加到主配置(nginx.conf)中。
  2. 在nginx配置目录中创建文件http.js,内容如下:函数decoded_target_url(r) {返回decodeURIComponent(r.args.target_url);}导出默认的{decoded_target_url};
  3. 将默认配置更改为: js_import http.js;js_set $decoded_target_url http.decoded_target_url;服务器{#.更多资料default_type文本/html;位置/重定向/{返回307 $decoded_target_url;}#.更多的东西)
  4. 运行nginx -t检查配置并重新启动服务器。

您需要将协议(http://https://)添加到查询参数中。

代码语言:javascript
复制
mylocalserver.com/redirect/?target_url=http%3A%2F%2Fexample.com%2F%3Fx%3Dy%26z%3Dk

或改变

代码语言:javascript
复制
return 307 $decoded_target_url 

硬编码

代码语言:javascript
复制
return 307 http://$decoded_target_url

代码语言:javascript
复制
return 307 https://$decoded_target_url

相关文件:

  • 模块ngx_http_js_模块
  • URL解码- NJS示例
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/627964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档