目录

1、作用:

2、语法:

2.1、替换的例子 一:

2.2、替换的例子 二:

3、容易用到的场景:

3.1、场景前提

3.2、实例对比实验

4、部分特性:


1、作用:

1、用来修改 被代理服务器(真实服务器) 返回的响应头中的 location 头域(location标识着客户端访问的地址) 和 refresh头域。
2、利用proxy_redirect这个指令可以为被代理服务器发出的相对重定向增加主机名。

2、语法:

proxy_redirect    redirect(旧地址)  replacement(新地址);
proxy_redirect    default;     #默认设置
proxy_redirect    off;           #关闭重定向

2.1、替换的例子 一:

假设 代理 服务器返回 Location字段为: http://localhost:8000/two/some/uri/
proxy_redirect      http://localhost:8000/two/    http://frontend/one/;
将Location字段重写为http://frontend/one/some/uri/

2.2、替换的例子 二:

在代替的新的字段中可以不写服务器名, 这样就使用服务器的基本名称和端口,即使它来自非80端口。
proxy_redirect  http://$host:8080/    /  ;    # 把客户端访问端口跳转回默认端口,这里可能是80        
通常需要这么做的机会很少。

3、容易用到的场景:

假设请求链接是  http://www.test.com/aming
结果会被301重定向到请求的链接为  http://www.test.com:8080/aming/  

3.1、场景前提

但实现这种“容易失误”的重定向有 几个前提 才会发生:
1、需要 locatin 是 /  而不是匹配更复杂;proxy_pass 不能加uri,且最后不能 / 结尾
注:如果proxy_pass 最后加 / 的话,是不会发生这种情况的,所以还是习惯加 / 的好 )
2、访问的uri必须是真实存在的目录,比如这里的 aming 目录是必须存在的
3、访问的URL不能以 / 结尾 。只能是  http://www.test.com/aming  而不能是 http://www.test.com/aming/

3.2、实例对比实验

例:
#假如代理服务器  还没加 proxy_redirect
server {
listen  80;
server_name  www.test.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header host $host;
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}
}
真实的有 /data/wwwroot/test.com/aming 目录,目录下有 index.html文件,文件内写着如下
curl -x192.168.133.140:80  www.test.com/aming/   
结尾有 /    访问到  /data/wwwroot/test.com/aming/index.html   ,正常
curl -x192.168.133.140:80  www.test.com/aming
结尾不带 /   访问到 www.test.com :8080/aming/          ,发生错误
因为客户访问到的代理服务器,没开8080端口,客户端这样访问会导致访问失败。
在代理上记录日志
在后端服务器记录日志
日志 添加上  端口记录字段
curl -x192.168.133.140:80  www.test.com/aming/ 时,都是正确的
代理服务器日志显示被访问的是80端口
被代理服务器显示被访问的是8080端口
curl -x192.168.133.140:80  www.test.com/aming  不带 /  时,会产生301重定向问题
这里可以看到客户端请求的响应头  Location 显示的是 8080 端口,证明客户端的请求被改为访问8080端口了
代理服务器日志显示被访问的是80端口,重定向了一次被访问端口变成了8080。
这可是记录的客户端的访问,客户端访问8080在代理服务器上是没有对应的监听的,因此会发生了301重定向错误。 
被代理服务器显示访问的是8080端口,也重定向了一次
所以这里需要加上 proxy_redirect ,把8080重定向回来80。
server {
listen  80;
server_name  www.test.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header host $host;
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
proxy_redirect  http://$host:8080/    /;           # 把客户端的请求跳转回80        
}
}
客户端访问成功,代理服务器 Location 响应头显示:客户的请求不再重定向到8080端口。

4、部分特性:

redirect  跳转页面,是服务端返回新的 url 地址, 浏览器二次发出 url 请求 , 属于一次 全新 的 http 请求,无法携带上一次请求的参数。

proxy_redirect相关推荐

  1. nginx配置中proxy_redirect的作用(转)

    来自http://wntest.ustc.edu.cn/mine/wordpress/?p=400  及 http://hi.baidu.com/171892549/blog/item/0ec6aae ...

  2. nginx 反向代理之 proxy_redirect

    proxy_redirect 该指令用来修改被代理服务器返回的响应头中的Location头域和"refresh"头域. 语法结构为: proxy_redirect redirect ...

  3. 06 nginx 处理转发其他域的处理 以及 proxy_redirect

    前言 容器端口映射导致 302 存在问题 以及 nginx 对于 302 的 Location 的重写 中描述了如果 上游服务 sendRedirect 到所在域的其他服务之后, 来到 nginx 这 ...

  4. nginx proxy_redirect 作用

    准备环境 springboot /redirect controller curl http://localhost:10080/redirect -vv * Trying ::1:10080... ...

  5. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

    一.什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的.停工时间,就是不能向用户提供服务的时间.高可用,就是系统具有高度可用性,尽量减少停工时间.如何用最简单的方法来搭建 ...

  6. Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 556  文章- 38  评论- 77 ...

  7. Linux Centos 7 安装配置nginx

    参考:https://www.cnblogs.com/boonya/p/7907999.html 环境准备: 1.安装gcc编译器 # yum install -y gcc 2.安装 pcre pcr ...

  8. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  9. Nginx反向代理负载均衡

    环境准备: 总共四台机器,两台装有Nginx的机器做负载均衡,两台机器装有Apache作为WEB服务器. 机器信息 hostname IP 说明 lb01 192.168.1.19 nginx主负载均 ...

最新文章

  1. Vivado中Block Memory Generator v8.3的使用
  2. mac启动本地redis_通过 Laravel Sail 构建基于 Docker 的本地开发环境
  3. 什么镜头最适合拍风景_双11大促 如何挑选最适合自己的第二支镜头?
  4. hdu1960 最小路径覆盖
  5. js字符串替换_浅析Vue的生命周期以及JS异步
  6. C程序员眼里的Python
  7. PHP语言 -- Ajax 查询数据
  8. 阿里巴巴对Java编程【单元测试】的规约
  9. nexttick使用场景_使用Jest实现Vue自动化测试
  10. 转载: .net程序员偏向XML开发的面试题
  11. 小小智慧树机器人_中国工厂番外篇丨AGV机器人演绎智能“搬运工”
  12. python抽学号程序_python:简单的学生管理系统
  13. 常用Docker 镜像命令(二)
  14. OpenWrt加入iptables 支持过滤字符串
  15. SOEM代码Slaveinfo Demo分析
  16. 计算机如何隐藏任务栏的程序,Win7隐藏任务栏
  17. NLP思维一书读书笔记
  18. 误删文件恢复免费软件推荐
  19. Java流(Stream)操作实例-筛选、映射、查找匹配
  20. 【flutter】上架马甲包过审

热门文章

  1. 如何从VDS明网下载钱包
  2. 环境建环和给排水工程计算机应用试卷,环境建环和给水排水工程计算机应用教材内容...
  3. 机器学习(周志华) 第九章聚类
  4. Android 俄罗斯方块
  5. UI自动化测试(Selenium,Unittest,DDT)
  6. 编写各种outofmemory/stackoverflow程序
  7. NRF51822-QFAC/NRF51822-QFAA/NRF51822-QFAB
  8. 5 种最常见的 DNS 故障诊断及问题处理方法
  9. SAP FICO 财务月结--自动清账
  10. 土豆视频搜索显示服务器走丢了,她往土里丢了一个土豆,结果家里变成了菜园!...