博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决nginx https代理tomcat redirect问题
阅读量:3557 次
发布时间:2019-05-20

本文共 1304 字,大约阅读时间需要 4 分钟。

原文:http://blog.csdn.net/juncke/article/details/52539175

问题描述

http服务器:nginx,10.10.10.95,版本:1.10.1,请求使用协议为https,端口为18080。

服务服务器:tomcat,10.10.10.92,使用协议为http,端口为8080。

问题:当在业务服务器使用sendRedirect时,tomcat响应302给nginx,nginx再响应给浏览器,默认情况下,nginx响应给浏览器的location会将schema换为http,端口为:80。

这就导致浏览器redirect后,访问不到正确资源。

过程举例:

  1. 浏览器输入:https://10.10.10.95:18080/redirect_test.do
  2. redirect_test.do中执行sendRedirect("/welcome.do")
  3. 浏览器接收到的redirect响应(302)中location为http://10.10.10.95/welcome.do
  4. 浏览器跳到http://10.10.10.95/welcome.do,发现访问不了

解决方案

修改nginx配置,关键配置如下:

    server{

        listen 18080;
        server_name ecsc;
        ssl on;
        ssl_certificate  /root/ssl/test.crt;
        ssl_certificate_key  /root/ssl/test_nopass.key;
        error_page 497  https://$host:8080;
        access_log  /var/log/nginx/access.log  main;
        proxy_redirect http:// $scheme://;
        port_in_redirect on;
        location ~/druid{
                return 404;
        }
        location /{
                proxy_connect_timeout 300;
                proxy_send_timeout 300;  
                proxy_read_timeout 300;
                expires 10d;
                proxy_pass  http://console.eayun.com ;
                proxy_set_header Host $host:$server_port;
                proxy_set_header  X-Real-IP        $remote_addr;  
                proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
        }

说明:

使用proxy_redirect将location中的协议转换为请求nginx的协议。

使用port_in_redirect on指示nginx使用请求的端口,而不是使用默认端口。

proxy_set_header Host $host:$server_port;很关键,我也不明白为啥大笑,不设置,端口为变为80。

你可能感兴趣的文章
Java基础入门 DateFormat类
查看>>
Java基础入门 Window类及Panel类
查看>>
Java基础入门 AWT事件处理
查看>>
Java基础入门 鼠标事件
查看>>
Java基础入门 键盘事件
查看>>
Java基础入门 GridLayout
查看>>
JavaEE Bean的两种常用作用域 singleton(单例)和prototype(原型)
查看>>
MySQL 数据库索引
查看>>
JavaEE Spring与MyBatis的整合之传统DAO方式整合(教材学习笔记)
查看>>
JavaEE MyBatis与Spring的整合——基于mapper接口方式开发(教材学习笔记)
查看>>
JavaWeb 使用Cookie实现——显示用户上次访问时间(教材学习笔记)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(五)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(六)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(七)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(八)
查看>>
中国大学MOOC—陆军工程大学数据结构MOOC习题集(2018秋)7-3 中位数
查看>>
Java发送邮件 注册成功发送邮件
查看>>
Mybatis的简单使用(增删改查),解决数据库字段名和实体类映射属性名不一致的问题
查看>>
Mybatis配置log4j文件 分页查询(limit,rowBounds)
查看>>
Mysql利用注解进行开发
查看>>