Nginx之proxy_redirect使用详解

 更新时间:2018年12月14日 15:03:14   作者:Sun-shell  
这篇文章主要介绍了Nginx之proxy_redirect使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

今天在做nginx反向代理apache的时候出了一点点问题,原来后端apache用的端口是8080通过反向代理后,使用wireshark抓包发现location头域数值为http://192.168.1.154:8080/wuman/  如果把这个返回给客户端肯定是不可以的,看起来别扭而且还暴露了apache的具体信息

所以在这里用到了nginx的proxy_redirect指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值

以下是截取nginx的一小段配置文档

server {
 listen 80;
 server_name www.boke.com;
 location / {
  proxy_pass http://192.168.1.154:8080;
  proxy_redirect off;
 }
 }

此时我们通过curl查看结果得出

[root@localhost nginx]# curl -I http://www.boke.com/wuman
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 24 Dec 2015 12:02:00 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: http://192.168.1.154:8080/wuman/

这里location为带有后端服务器实际地址跟端口的响应头信息这样在实际线上是不允许的所以这里我们打算通过proxy_redirect将被代理服务器的响应头中的location字段进行修改后返回给客户端

server {
 listen 80;
 server_name www.boke.com;
 location / {
  proxy_pass http://192.168.1.154:8080;
  proxy_redirect http://192.168.1.154:8080/wuman/ http://www.boke.com/wuman/;
 }

server {
 listen 80;
 server_name www.boke.com;
 location / {
  proxy_pass http://192.168.1.154:8080;
  proxy_redirect ~^http://192.168.1.154:8080(.*) http://www.boke.com$1;
 }

则curl查看返回结果

[root@localhost nginx]# curl -I http://www.boke.com/wuman
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 24 Dec 2015 12:08:34 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: http://www.boke.com/wuman/

此时查看location已经变成了我们想要的结果了。 此时通过replacement 301重定向到了我们新的页面

出处:

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 ; /;

参数off将在这个字段中禁止所有的proxy_redirect指令:

proxy_redirect off;
proxy_redirect default;
proxy_redirect http://localhost:8000/ /; proxy_redirect ; /;

利用这个指令可以为被代理服务器发出的相对重定向增加主机名:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解基于CentOS 7配置Nginx自启动

    详解基于CentOS 7配置Nginx自启动

    这篇文章主要介绍了详解基于CentOS 7配置Nginx自启动,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 在Nginx服务器中使用LibreSSL的教程

    在Nginx服务器中使用LibreSSL的教程

    这篇文章主要介绍了在Nginx服务器中使用LibreSSL的教程,LibreSSL是SSL的一个人气软件库,需要的朋友可以参考下
    2015-06-06
  • 修改Nginx源码实现worker进程隔离实现详解

    修改Nginx源码实现worker进程隔离实现详解

    这篇文章主要为大家介绍了修改Nginx源码实现worker进程隔离实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Linux系统下nginx日志每天定时切割的脚本写法

    Linux系统下nginx日志每天定时切割的脚本写法

    本篇文章给大家分享使用Linux系统自带的命令logrotate对Nginx日志进行切割的方法,对nginx日志切割脚本感兴趣的朋友一起学习吧
    2016-11-11
  • nginx安装完成无法解析php解决方法

    nginx安装完成无法解析php解决方法

    大家好,本篇文章主要讲的是nginx安装完成无法解析php解决方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • nginx反向代理配置去除前缀

    nginx反向代理配置去除前缀

    这篇文章主要介绍了nginx反向代理配置去除前缀的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Nginx使用自签ssl证书实现https连接的方法

    Nginx使用自签ssl证书实现https连接的方法

    本文主要介绍了Nginx使用自签ssl证书实现https连接的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Nginx 动态域名解析过程详解

    Nginx 动态域名解析过程详解

    这篇文章主要为大家介绍了Nginx 动态域名解析过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Nginx访问本地静态资源详细步骤(推荐)

    Nginx访问本地静态资源详细步骤(推荐)

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,这篇文章主要介绍了nginx配置访问本地静态资源,需要的朋友可以参考下
    2022-12-12
  • ConfigMap挂载与Subpath在Nginx容器中的应用小结

    ConfigMap挂载与Subpath在Nginx容器中的应用小结

    configmap可以通过ENV环境变量和文件两种方式挂载到容器中,修改configmap后容器中对应的ENV环境变量不会更新,将配置文件nginx.conf以configmap文件的方式挂载到容器中,本文介绍ConfigMap挂载与Subpath在Nginx容器中的应用小结,感兴趣的朋友一起看看吧
    2024-03-03

最新评论