`

nginx配置中proxy_redirect的作用(转)

阅读更多
来自http://wntest.ustc.edu.cn/mine/wordpress/?p=400
及 http://hi.baidu.com/171892549/blog/item/0ec6aaef22acbb1dfdfa3ca7.html

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指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值 以下是截取nginx的一小段配置文档 server { listen 80; server_name www.boke.com; l

    一分钟搞定 Nginx反向代理 nginx域名代理

    proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } (完整拷贝上面的内容server_name www.**...

    Nginx+Tomcat负载均衡

    3.这里只需要修改Nginx的配置,让它通过tomcat来转发,所以我们在这一步只需要在nginx.conf中添加几行代码就行。 如果看不懂 。建议直接拿我替来用。 Copy下面的内容 替换 你的nginx.conf注意黄色端口要改为你的。 ...

    Nginx屏蔽F5心跳日志、指定IP访问日志

     proxy_redirect off;  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_pass http://mmt;  if ( $remote_...

    nginx-auth:一个简单的身份验证应用程序,供nginx auth_request机制使用

    Nginx验证nginx-auth是一个简单的基于表单的身份验证服务器,旨在与nginx的auth_request插件一起使用。 它允许您使用基于表单的身份验证代替基本身份验证来验证用户。部署范例location /private/ { auth_request /...

    封80端口应对策略 Nginx反向代理For WIN2003超级傻瓜式配置

    proxy.conf内容: 代码如下: proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwa

    F5XForwardedFor2008源码

    1、配置nginx proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 2. https://www.163yun.com/help/do 3...

    反向代理Nginx

    Nginx反向代理 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; root E:\yuehou\git\web-h5\dist; location / { try_files $uri $uri/ /index....

    Nginx实现非套路镜像站的踩坑记录

    缘起 前几天发现一个电子书非常棒,但是是 github 上的,总是打不开,而正好我的... proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade

    floxel:简单的基于体素的策略游戏引擎

    例如在 nginx 中: server { server_name floxel; location / { alias /code/floxel/; } location /server/ { proxy_pass http://127.0.0.1:1337/; proxy_redirect off; # proxy_buffering off; ...

    nginx-ssl-proxy:Docker nginx ssl 反向代理

    --name ssl-proxy rnbwd/nginx-ssl-proxy docker run -e VIRTUAL_HOST=foo.bar.com -e REDIRECT=true [...] 使用 env vars 反向代理 docker 容器 重要信息 ssl 证书通过主机名连接,请确保 certs 目录中存在“foo....

    docker-nginx-lua-waf:基于 Nginx + Lua 技术栈的 WAF

    docker run -d -p 8080:80 -e PROXY_REDIRECT_IP=10.10.10.9 \ bilxio/nginx-lua-waf 配置 复制并修改 src/waf/config.lua。 通过-v param 将修改后的配置挂载到容器 例如: cp src/waf/config.lua /tmp/config....

    dash:Houdini Web服务的服务器

    Nginx配置的示例: # legacy (AS2) # server_name play.clubpenguin.com location /create_account/create_account.php { proxy_pass http://localhost:3000/create/legacy; proxy_redirect off; proxy_set_...

    blog-backend:前阶段分离实践----基于Koa2框架博客

    nginx文件配置内容 server { listen 80; server_name localhost; location / { proxy_pass http://127.0.0.1:8080; #转发非api,与上传的静态资源的其他信息 proxy_redirect default; } location /api/ { proxy_pass...

    Nginx session丢失问题处理解决方法

    在用nginx的反向代理tomcat的路径中,可能会出现session丢失问题。每发送一次请求 JESSIONID 都会发生改变,说明上一次形成的session丢失,从而创建新的session。 第一种情况: server{ listen 80; server_name...

    blog-springboot:河北大学数据库课程设计 韩旭个人博客SpringBoot + Mybatis + Thymeleaf + MySQL

    docker部署 端口映射8989 上传图片挂载 /home/ubuntu/blog 连接MySQL8.0 mysql-test ''' ...''' nginx 反向代理 ''' #我的博客网站,nginx反向代理 ...proxy_redirect off; proxy_set_header Host $host; proxy_s

    springboot+fastdfs+nginx.zip

    在每一台storage服务器主机上部署Nginx及FastDFS扩展模块,由Nginx模块对storage存储的文件提供http下载服务, 仅当当前storage节点找不到文件时会向源storage主机发起redirect或proxy动作。 个人理解:当一个文件A...

    redirect_ynh:YunoHost的重定向应用

    该应用程序仅添加带有redirect或proxy_pass规则的Nginx配置文件,以及一个YunoHost磁贴。 而已。 重定向类型 可见重定向 访客的地址栏将更改。 有用的将用户链接添加到另一个网站 you-domain....

Global site tag (gtag.js) - Google Analytics