nginx proxy_redirect https配置后端http302跳转处理方式

 更新时间:2024年06月04日 11:35:10   作者:hkNaruto  
这篇文章主要介绍了nginx proxy_redirect https配置后端http302跳转处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

nginx proxy_redirect https配置后端http302跳转

# HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;
 
        charset utf8;
        ssl_certificate      full_chain.pem;
        ssl_certificate_key  private.key;
 
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
 
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        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_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout      10;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_redirect http://$host/ https://$host:$server_port/;
 
        
        location /mgr/ {
                proxy_pass http://localhost:8080/mgr/;
        }
 
    }

nginx使用proxy_redirect替换proxy_pass Response 301/302的Location字段

Nginx通过proxy_pass反向代理请求到任意一个地址,并将Response返回给用户,多数情况下这是没什么问题的,但有一种情况下需要额外处理301/302的Location字段,假设

  • Server: 192.168.1.2: 是内网中的一台服务,在内网环境中大家都直接访问它
  • Nginx: 192.168.1.3: 是一台外网入口的Nginx服务,访问外网IP将直接访问到它,它会反向代理到192.168.1.2

192.168.1.3 nginx.conf

server {
  listen80;
  server_name www.iisp.com;
 
  location / {
    proxy_pass http://192.168.1.2;
  }
}

可是通过外网用户通过域名www.iisp.com通过Nginx代理服务器反向代理内网服务时Server在Response 301/302的Location会写内网IP,如:

$ curl -I http://www.iisp.com/
HTTP/1.1 302
Server: nginx/1.16.0
Date: Tue, 26 Nov 2019 08:00:35 GMT
Location: http://192.168.1.2/index.html
Connection: keep-alive
Cache-Control: no-cache

外网用户被Location到一个内网地址192.168.1.2自然访问不到,因为不是在内网环境。

这个时候我们需要配置一下Nginx的反向代理设置,通过添加一条proxy_redirect指令替换Server响应301/302 Location字段,配置如下:

server {
  listen80;
  server_name www.iisp.com;
 
  location / {
    proxy_pass http://192.168.1.2;
    proxy_redirect http://192.168.1.2 http://www.iisp.comwww.iisp.com;
  }
}

保存重启Nginx服务,此时再来测试一下,外网测试入口www.iisp.com:

$ curl -I http://www.qttc.net/
HTTP/1.1 302
Server: nginx/1.16.0
Date: Tue, 26 Nov 2019 08:31:45 GMT
Location: http://www.qttc.net/index.html
Connection: keep-alive
Cache-Control: no-cache

从上面的信息可以看到从外网访问时Server服务response的header信息中,已经在Nginx反向代理那一段替换了Location字段的协议、域名和端口部分,这样的话外网用户最终得到的302地址是一个外网地址从而可以跳转网页

而内网用户因为直接访问Server服务,不经过Nginx代理,自然也不会受影响,内网测试入口192.168.1.2:

$ curl -I http://192.168.1.2/
HTTP/1.1 302
Server: nginx/1.16.0
Date: Tue, 26 Nov 2019 09:10:33 GMT
Location: http://192.168.1.2/index.html
Connection: keep-alive
Cache-Control: no-cache

通过额外部署一个Nginx并利用proxy_redirect指令配合proxy_pass反向代理解决了内外网不同IP/域名访问服务的问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx修改默认端口方法图文详解

    nginx修改默认端口方法图文详解

    我们都知道nginx 默认使用80端口,有时候我们希望nginx运行在其他端口,下面这篇文章主要给大家介绍了关于nginx修改默认端口的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 详解nginx location指令

    详解nginx location指令

    location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响应,这其中较难理解的是多个location的匹配顺序,本文会作为重点来解释和说明,这篇文章主要介绍了nginx location指令详解,需要的朋友可以参考下
    2022-01-01
  • Nginx的正则表达式详解

    Nginx的正则表达式详解

    今天来聊一聊他的正则表达式的使用规则,我会简单的举几个例子然后进行说明讲解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • nginx安装时,make编译可能会出现的错误问题

    nginx安装时,make编译可能会出现的错误问题

    这篇文章主要介绍了nginx安装时,make编译可能会出现的错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx限制IP访问的实现示例

    Nginx限制IP访问的实现示例

    限制某些IP地址访问网站是一个常见的需求,本文主要介绍了Nginx限制IP访问的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • 单台web服务器如何尽可能的提高网站性能

    单台web服务器如何尽可能的提高网站性能

    一个网站,对于个人或小公司来说,前期直接上集群的开销是比较大的,那么采用单台服务器如何才能尽可能的提高网站效率呢?
    2014-06-06
  • Nginx反向代理及负载均衡如何实现(基于linux)

    Nginx反向代理及负载均衡如何实现(基于linux)

    这篇文章主要介绍了Nginx反向代理及负载均衡如何实现(基于linux),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • nginx部署多前端项目的几种方法

    nginx部署多前端项目的几种方法

    最近一台服务器要配置多个前端项目,个人总结了3种方法来实现在一台服务器上使用nginx部署多个前端项目的方法。需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Nginx中使用Lua脚本与图片的缩略图处理的实现

    Nginx中使用Lua脚本与图片的缩略图处理的实现

    本文主要介绍了Nginx中使用Lua脚本与图片的缩略图处理的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • nginx指定conf文件路径的方法详解

    nginx指定conf文件路径的方法详解

    在使用 Nginx 时,有时需要指定配置文件(nginx.conf)的路径,这篇文章为大家整理了一些常用的方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11

最新评论