nginx的proxy_redirect
proxy_redirect
语法:proxy_redirect [ default|off|redirect replacement ];
默认:proxy_redirect default;
配置块:http、server、location
当上游服务器返回的响应是重定向或刷新请求(如HTTP响应码是301或者302)时,proxy_redirect可以重设HTTP头部的location或refresh字段。
        location /login {
            proxy_pass http://target_servers/login ;
        }
假设当前nginx的访问地址为http://192.168.99.100:8080,如果target_servers又有302到192.168.99.100/xxx
那么可以添加下redirect,将302的location改为http://192.168.99.100:8080/xxx
        location /login {
            proxy_pass http://target_servers/login ;
            proxy_redirect http://192.168.99.100/ http://192.168.99.100:8080/;
        }
host变量
如果不想写死ip地址,可以使用nginx的变量
        location /login {
            proxy_pass http://target_servers/login ;
            proxy_redirect http://$host/ http://$http_host/;
        }
其中host不带端口的,也就是nginx部署的主机ip,而$http_host是带端口的
NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。以例子说明:
server { 
       listen       80; 
       server_name  test.abc.com; 
       location / { 
            proxy_pass http://10.10.10.1:9080; 
       } 
   }这段配置一般情况下都正常,但偶尔会出错, 错误在什么地方呢? 抓包发现服务器给客户端的跳转指令里加了端口号,如 Location: http://test.abc.com:9080/abc.html 。因为nginx服务器侦听的是80端口,所以这样的URL给了客户端,必然会出错.针对这种情况, 加一条proxy_redirect指令: proxy_redirect http://test.abc.com:9080/ / ,把所有“http://test.abc.com:9080/”的内容替换成“/”再发给客户端,就解决了。
server { 
       listen       80; 
       server_name  test.abc.com; 
       proxy_redirect http://test.abc.com:9080/ /; 
       location / { 
            proxy_pass http://10.10.10.1:9080; 
       } 
   }
http://nginx.179401.cn/ 
圣地啊 加红 加粗~!!
出处:http://nginx.179401.cn/StandardHTTPModules/HTTPProxy.html 
proxy_redirect 
语法:proxy_redirect [ default|off|redirect replacement ] 
默认值:proxy_redirect default 
使用字段:http, server, location 
如果需要修改从被代理服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令设置。 
假设被代理服务器返回Location字段为: http://localhost:8000/two/some/uri/ 
这个指令: 
proxy_redirect http://localhost:8000/two/ http://frontend/one/; 
将Location字段重写为http://frontend/one/some/uri/。 
在代替的字段中可以不写服务器名:
proxy_redirect http://localhost:8000/two/ /; 
这样就使用服务器的基本名称和端口,即使它来自非80端口。 
如果使用“default”参数,将根据location和proxy_pass参数的设置来决定。 
例如下列两个配置等效:
location /one/ {  proxy_pass       http://upstream:port/two/;  proxy_redirect   default;} location /one/ {  proxy_pass       http://upstream:port/two/;  proxy_redirect   http://upstream:port/two/   /one/;} 
在指令中可以使用一些变量:
proxy_redirect   http://localhost:8000/    http://$host:$server_port/; 
这个指令有时可以重复:
proxy_redirect   default;  proxy_redirect   http://localhost:8000/    /;  proxy_redirect   http://www.example.com/   /; 
参数off将在这个字段中禁止所有的proxy_redirect指令:
proxy_redirect   off;  proxy_redirect   default;  proxy_redirect   http://localhost:8000/    /;  proxy_redirect   http://www.example.com/   /; 
利用这个指令可以为被代理服务器发出的相对重定向增加主机名:
nginx的proxy_redirect的更多相关文章
- nginx 之 proxy_redirect详解
		proxy_redirect 语法:proxy_redirect [ default|off|redirect replacement ] 默认值:proxy_redirect default 使 ... 
- Nginx学习笔记--001-Nginx快速搭建
		Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ... 
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
		在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ... 
- Nginx简单手册
		Nginx 变量 变量名 注解 $arg_name 请求中的的参数名,即“?”后面的arg_name=arg_value形式的arg_name $args 请求中的参数值 $binary_remot ... 
- Nginx配置以及域名转发
		工程中的nginx配置 #user nobody; worker_processes 24; error_log /home/xxx/opt/nginx/logs/error.log; pid /ho ... 
- Nginx SSL 结合Tomcat 重定向URL变成HTTP的问题
		http://www.siven.net/posts/d925bb5d.html *********************************************** 问题描述 由于要配置服 ... 
- nginx反向代理tomcat应用,struts2网站程序redirect时导致请求地址错误的解决方法
		一个使用struts2的网站在登录页面需要进行redirect跳转,大致如下: <package name="admin" extends="httl-defaul ... 
- nginx在使用非80端口做反向代理【转】
		设置nginx反向代理,nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 upstream jboss{ server max_fails= fail_timeout=20s; s ... 
- NGINX宏观手记(变量|配置)
		前言 任何一个工具都有它的灵魂所在,作为一个PHP程序员,我们可能仅仅使用了它的一小部分,这篇文章让你更加了解Nginx,本章大多都是总结.翻译.整理 ,希望你可以知道nginx不仅仅是PHP的附属品 ... 
随机推荐
- 模组 前后端分离CURD 组件
			js (function () { // {# -------------------------------------------------------------------------- # ... 
- Django 序列化-token
			幂等性 幂等性:多次操作的结果和一次操作的结果是一样的 ,put请求是幂等的 post请求不是幂等的 序列化组件 全局和局部钩子函数 异常信息抛出过程 认证 路由里的,login.as_view() ... 
- js小方法,获取知道公历生日 (‘1992-01-19’),获取阴历生日日期,属相,非简单根据年份判断-----------声明:整理自网络!!
			let lunar = { tg: '甲乙丙丁戊己庚辛壬癸', dz: '子丑寅卯辰巳午未申酉戌亥', number: '一二三四五六七八九十', year: '鼠牛虎兔龙蛇马羊猴鸡狗猪', mont ... 
- python3 基础语法(二)
			一.python3的基本数据类型: 和其他语言一样都包含了以下数据类型: 类型 含义 实例 INT 整型(integer) 1 FLOAT 浮点型 1.1 BOOL 布尔值 TRUE/FALSE ST ... 
- jquery 第五章 jQuery操作表单与表格
			1.回顾 对象.bind("事件名称",function(){ // }) 阻止冒泡事件 return false, event stopProapagation() 模拟事件 ... 
- mysql的配置说明
			查询最高内存占用 使用以下命令可以知道mysql的配置使用多少 RAM SELECT ( @@key_buffer_size + @@query_cache_size + @@innodb_buffe ... 
- tensorflow变量-【老鱼学tensorflow】
			在程序中定义变量很简单,只要定义一个变量名就可以,但是tensorflow有点类似在另外一个世界,因此需要通过当前的世界中跟tensorlfow的世界中进行通讯,来告诉tensorflow的世界中定义 ... 
- 你好!酷痞 Coolpy
			欢迎你进入酷痞的物联网世界.这里有着自由的空气和自然的气息.接下来我将告诉你如果一步步建立一个自己专属的物联网平台. 由于目前的酷痞的官方域名还没有通过备案所以现在用临时域名解说本说明. 最终酷痞的官 ... 
- python---日常练习
			##输入a,b,c,d4个整数,计算a+b-c*d的结果 #numa=input('请输入整数:'); #numb=input('请输入整数:'); #numc=input('请输入整数:'); #n ... 
- fastadmin表单验证
			Unexpected token < in JSON at position 0 注意: if (!form.is("form"))//form的选择器不是form直接返回所 ... 
