Apache 配置Https 转发Tomcat ,tomcat中的项目也可以使用https

server/2024/9/25 8:33:07/

1.从Apache服务器和Nginx服务器差不多,都可以做反向代理服务器

2.首先需要拆解下步骤:

2.1 Apache 支持Https;

2.2 Apache 代理转发;

https_Tomcat__5">2.3 Apache https 代理转发Tomcat ;

3. 具体的步骤

步骤一:下载SSL证书

  1. 登录阿里云数字证书管理服务控制台

  2. 在左侧导航栏,单击SSL 证书。

  3. 在SSL 证书页面,定位到目标证书,在操作列,单击下载。

  4. 在服务器类型为Apache的操作列,单击下载。
    https://img-blog.csdnimg.cn/direct/0ac5124f5f274284881e318581ee5cbe.png" alt="在这里插入图片描述" />

5.解压缩已下载的SSL证书压缩包。根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。
https://img-blog.csdnimg.cn/direct/5c72a11a66f8448e9b9ad3fe66e3aa71.png" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/direct/f67b09e4ce0e418c97b25a3695233c6b.png" alt="在这里插入图片描述" />

步骤二:在Apache服务器安装证书

1. 执行以下命令,在Apache的安装目录下创建一个用于存放证书的cert目录。

a.进入Apache的安装目录。

cd /etc/httpd/ 
#使用yum安装Apache的默认安装目录。如果您手动修改过该目录或使用其他方式安装的Apache,请根据实际配置调整。

b.创建cert目录。

mkdir cert #创建证书目录,命名为cert。

2.将证书文件和私钥文件上传到Apache服务器的证书目录(/etc/httpd/cert)。

3.编辑Apache配置文件httpd.conf和ssl.conf,修改与证书相关的配置。

a. 找到LoadModule ssl_module modules/mod_ssl.so(用于加载mod_ssl.so模块启用SSL服务) 和Include conf.modules.d/*.conf(用于加载SSL配置目录),并检查是否被注释,如果被注释,请删除#注释。

LoadModule ssl_module modules/mod_ssl.so:位于本文中**ssl.conf**该配置文件下。Include conf.d/*.conf : 位于本文中**httpd.conf**该配置文件下。

b.未找到 文件,则可执行yum install -y mod_ssl命令安装,httpd -M | grep ‘ssl’ 命令检查mod_ssl.so是否安装成功

如果仍未找到以上参数,请确认您的Apache服务器中是否已经安装mod_ssl.so模块。如未安装,可执行yum install -y mod_ssl命令安装,安装后,可执行httpd -M | grep 'ssl'命令检查mod_ssl.so是否安装成功。

c.执行以下命令,打开ssl.conf配置文件。

vim /etc/httpd/conf.d/ssl.conf

d.在ssl.conf配置文件中,定位到以下参数,按照中文注释修改


<VirtualHost *:443> 
#修改为申请证书时绑定的域名。 ServerName  www.pwx.com# 古籍检索系统 ,重定向到tomcat 中古籍检索系统项目
ProxyPass /record http://127.0.0.1:8080/record
ProxyPassReverse /record http://127.0.0.1:8080/record#虚拟仿真,重定向到tomcat 中虚拟仿真项目
ProxyPass /wave http://127.0.0.1:8080/wave
ProxyPassReverse /wave http://127.0.0.1:8080/wave# 公众号,重定向到tomcat 中 公众号项目
ProxyPass /pwxaccount http://127.0.0.1:8080/pwxaccount
ProxyPassReverse /pwxaccount http://127.0.0.1:8080/pwxaccount# 将domain_name_public.crt替换成您证书文件名。SSLCertificateFile cert/domain_name_public.crt # 将domain_name.key替换成您证书的密钥文件名。SSLCertificateKeyFile cert/domain_name.key# 将domain_name_chain.crt替换成您证书的证书链文件名。SSLCertificateChainFile cert/domain_name_chain.crt #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。SSLEngine on# 添加SSL协议支持协议,去掉不安全的协议。SSLProtocol all -SSLv2# 修改加密套件。SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES</VirtualHost>#如果证书包含多个域名,复制VirtualHost参数,并将ServerName修改为第二个域名。 
<VirtualHost *:443> ServerName #修改为申请证书时绑定的第二个域名。 SSLCertificateFile cert/domain_name2_public.crt # 将domain_name2替换成您申请证书时的第二个域名。SSLCertificateKeyFile cert/domain_name2.key # 将domain_name2替换成您申请证书时的第二个域名。SSLCertificateChainFile cert/domain_name2_chain.crt # 将domain_name2替换成您申请证书时的第二个域名。SSLEngine on SSLHonorCipherOrder on#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。#SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。#SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。
</VirtualHost>

步骤三:. 配置Tomcat 得server.xml 文件

(1) 配置Tomcat server.xml 文件,添加proxyPort和scheme如下图:

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"proxyPort="443"scheme="https"/>

或者

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"/> 

步骤四:重启启动Tomcat和Apache

a. 控制Apache 的操作命令

# 启动Apache命令
service httpd start 
# 重新 启动Apache命令
service httpd restart 
# 停止Apache命令
service httpd stop
# 启动Apache命令
service httpd status

b. 控制Tomcat的操作命令

# 启动Tomcat命令
sh  startup.sh# 停止Tomcat命令
sh  shutdown.sh

c.控制Nginx的操作命令

# 开启nginx
./nginx
# 重启nginx
./nginx -s reload
# 查询nginx主进程号
ps -ef|grep nginx
# 杀死进程
kill -TERM 进程号
# 停止nginx
nginx -s stop

d.重启mysql操作命令

# 使用service 命令重启
service mysql restart

http://www.ppmy.cn/server/15236.html

相关文章

C语言指针进阶:各类型指针变量详解

目录 1. 字符指针变量2. 数组指针变量2.1 什么是数组指针变量2.2 数组指针变量的初始化 3. 二维数组传参的本质4. 函数指针变量4.1 函数指针变量的创建4.2 函数指针变量的使用4.3 代码分析4.3.1 typedef 关键字 5. 函数指针数组6. 转移表 正文开始。 1. 字符指针变量 我们可以…

MySQL中如何随机获取一条记录

点击上方蓝字关注我 随机获取一条记录是在数据库查询中常见的需求&#xff0c;特别在需要展示随机内容或者随机推荐的场景下。在 MySQL 中&#xff0c;有多种方法可以实现随机获取一条记录&#xff0c;每种方法都有其适用的情况和性能特点。在本文中&#xff0c;我们将探讨几种…

以算力深挖数据应用价值!和鲸助力北京市市场监管数据应用创新竞赛圆满收官!

历时三个多月&#xff0c;北京市市场监管数据应用创新竞赛&#xff08;以下简称“竞赛”&#xff09;圆满收官。本次竞赛旨在挖掘数据的潜在价值&#xff0c;以优化营商环境、智慧监管、高质量发展为核心议题&#xff0c;鼓励参赛者深入结合监管数据&#xff0c;开展精准而深入…

MYSQL 存储java.sql.Timestamp类型的数据时,mysql存储时间和java获取到的时间相差8小时

###JAVA JDBC驱动 com.mysql.cj.jdbc.DriverJDBC连接字符串 jdbc:mysql://127.0.0.1:3006/db?useUnicode=true&characterEncoding=UTF8&useLegacyDatetimeCode=false&serverTimezone=UTCMySQL 时区 show global variables like “%time_zone%”; 问题分析 …

N5245B PNA-X 微波网络分析仪

N5245B PNA-X 微波网络分析仪 " 900 Hz/10 MHz 至 50 GHz " N5245B PNA-X 微波网络分析仪&#xff0c;900 Hz/10 MHz 至 50 GHz&#xff0c;2 端口和 4 端口&#xff0c;多达三个信号源。 特点 实现卓越性能 这款 PNA-X 分析仪不仅仅是一款矢量网络分析仪&a…

【python】给函数参数和返回值标注类型

&#xff08;1&#xff09;类型标注进化历史 从Python 3.0开始的类型标注 Python 3.0开始&#xff0c;Python 已经支持基础的类型标注&#xff0c;例如&#xff0c;你可以在函数声明中这样写&#xff1a; def func(a: int, b: str) -> bool:return b.isdigit() and a >…

JavaEE 初阶篇-深入了解 UDP 通信与 TCP 通信(综合案例:实现 TCP 通信群聊)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 UDP 通信 1.1 DatagramSocket 类 1.2 DatagramPacket 类 1.3 实现 UDP 通信&#xff08;一发一收&#xff09; 1.3.1 客户端的开发 1.3.2 服务端的开发 1.4 实现 …

Python语法糖大全

本文汇集了一些常用的Python语法糖&#xff0c;供大家查询使用。 1. 集合与序列操作 列表推导式&#xff1a;创建列表。[x**2 for x in range(10)]字典推导式&#xff1a;创建字典。{x: x**2 for x in range(10)}集合推导式&#xff1a;创建集合。{x**2 for x in range(10)}条…