IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> nginx安装SSL证书以及反向代理tomcat问题汇总 -> 正文阅读

[网络协议]nginx安装SSL证书以及反向代理tomcat问题汇总

前情提要

nginx开启SSL模块教程:Nginx安装SSL证书前需要开启SSL模块

nginx安装SSL证书教程:腾讯云Nginx服务器SSL证书安装部署

一、tomcat没有安装SSL证书,但是想通过Https协议访问tomcat

此处使用的就是nginx的反向代理,本质上我们访问tomcat还是使用http协议,但我们通过nginx的反向代理,会先通过Https协议访问nginx,然后再通过nginx将Https请求转发为http请求发送给tomcat服务器。相当于加了一层请求转发,这也让我们可以不在tomcat上安装ssl证书就可以通过https协议访问tomcat。多集群下,nginx也支持负载均衡,所以我们通常是在nginx上安装SSL证书。

反向代理看着复杂,但其实只需要在nginx.conf上配置以下,具体看以下配置:

假定你的服务器地址为127.0.0.1;看到127.0.0.1就填你自己服务器的ip地址,看到8080就填你tomcat服务器的端口号。

【地理路径地址】:例如你想让?https://127.0.0.1/test 这个路径代理tomcat服务器,那么此处就填写/test。

【tomcat项目地址】:首先你要确定你所要代理的tomcat项目,然后在此处填写 https://127.0.0.1:8080/项目名?

server {
    。。。。。。。
    
    location [代理路径地址] {
            proxy_pass [tomcat项目地址];
            proxy_http_version 1.1;
            proxy_set_header  X-Forwarded-Proto https; #配置报文转发协议为https
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  Host $http_host;
            proxy_set_header Cookie $http_cookie;
            proxy_connect_timeout 30; 
            proxy_set_header Referer $http_referer;
            proxy_cookie_path [/项目名] [代理路径地址]; #保证https和http的cookie一致
        }
}

proxy_cookie_path介绍:proxy_cookie_path详细介绍

二、nginx安装SSL证书后,反向代理https请求不携带cookie的问题

首先这个问题,有好几个方面的影响,其中一个环节出问题,就都会出问题,所以请耐心看下去,我会尽量讲清楚。

1.nginx安装SSL证书后,其中的项目如果ajax或axios发送http请求会出现(已屏蔽:mixed-content)的情况,F12控制台会显示

解决办法:通过nginx反向代理tomcat,使所有请求都变成https请求,就不会出现此错误。

2.反向代理配置问题

如果你是按照我上面的反向代理的配置,那就不会出现问题,主要是要配置

proxy_set_header Cookie $http_cookie;?

?proxy_cookie_path [/项目名] [代理路径地址]; #保证https和http的cookie一致

这两项。

3.例:前后端分离,前端Vue,后端SSM(所以推荐前后端分离项目使用token)

Vue中axios是默认不带cookie的,所以要在main.js中添加代码如下:

import axios from 'axios';#如果有就不要加了
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.withCredentials = true;

后端SSM中,我们要配置允许跨域,此处会有一点坑(本菜逼改了一天才找到)

首先,可以看一下这篇文章:前后端分离中本地调试和部署远端Cookie的不同

看完上面这一篇文章,就会明白,本地调试为什么没有cookie。

然后,我们在后端配置允许跨域时(SSM,Spring Boot本质一样都是Spring MVC)

通常会将'Access-Control-Allow-Origin'?= "*",这样在同ip同协议下是可以的,但在Https、http请求转换下,我们就需要将'Access-Control-Allow-Origin' 设置为我们axios所请求的协议加ip,如我的axios请求为https://127.0.0.1/test,那么'Access-Control-Allow-Origin'就要设置为"https://127.0.0.1"。在SSM中的MVC.xml配置如下:

<!--前后端分离,允许跨域-->
    <!--  重中之重,反复观看  -->
    <mvc:cors>
        <mvc:mapping path="/**"
                     allowed-origins="axios所请求的协议加ip"
                     allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
                     allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
                     allow-credentials="true" />
    </mvc:cors>
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 19:06:09  更:2022-03-30 19:10:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:19:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码