如何在Apache中方便地切换http和https?

服务部署之配置WSUS更新服务(基于Windows配置 Server 2022) 阅读详情

在YMU系统中,我们使用Apache 2.x作为前端Web Server,用于静态内容的保存和获取,及动态内容向后端Web Server(Tomcat)的转发;同时Apache 2.x也承担Tomcat服务器之间的负载均衡器。

 

从性能方面考虑,YMU系统的大部分页面采用http协议传输。而某些页面,如注册、登录和修改密码等安全性要求高的页面,则需要采用https协议进行传输。

 

如何在http及https协议之间转换?最直接的办法是采用绝对路径,此方法优点是间接明了,缺点是移植性差。一个比较好的方法是使用Apache的rewrite模块对相对路径进行转换,从而达到协议转换的目的。

 

我们可以在Apache的官方文档中找到http/https切换的相关说明:

RewriteEngine on

RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L]

RewriteRule ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1 [R,L]

 

如果直接定义在httpd.conf,则会有以下问题:

l         在页面中点击这些特殊的URL(login.html:SSL)时,浏览器会报协议错误,它把:SSL前面的内容(login.html)当作协议了;

l         如果把“:”改成“_”或其他字符,则http可以转到https了,而https则不能转成http。什么原因呢?看了很多文档,才发现rewrite规则设置是针对虚拟主机的,而443端口被配置成另外的虚拟主机,所以就规则就失效了,还得在ssl配置文件(httpd-ssl.conf)中设置转发规则。

 

下面举例说明配置过程。假设我们在相对路径url后增加_ssl表示以https协议装载url;而url后面增加_nossl则用于在https页面中跳转回http协议。配置步骤如下:

 

1.       编译Apache时,生成rewrite模块(mod_rewrite.so);

2.       在httpd.conf中装载rewrite模块,并定义http->https的转换规则:

LoadModule rewrite_module modules/mod_rewrite.so

 

<IfModule rewrite_module>

RewriteEngine On                                                         

#RewriteLog "/usr/local/apache2/logs/rewrite.log"

#RewriteLogLevel 10

RewriteRule ^/(.*)_ssl$ https://%{SERVER_NAME}/$1 [R,L]

RewriteRule ^/(.*)_nossl$ http://%{SERVER_NAME}/$1 [R,L]

</IfModule>

 

其中:

  • RewriteEngine On:打开转换引擎;
  • RewriteLog:定义日志文件,用于调试;
  • RewriteLogLevl:设置日志级别,0表示不输出;数字越大,则输出信息越详细;
  • RewriteRule:定义转换规则,其中:
  • ^/(.*)_ssl$:表示 以 / 开头,以_ssl结尾;
  • https://%{SERVER_NAME}/$1:$1表示URL中 / 后 与 _ssl之前的部分内容;
  • [R, L]:R表示重定向;L表示最后一条规则,即若符合条件,则不再匹配下面规则;
3.       在 ssl 配置文件 (conf/extra/httpd-ssl.conf) 中定义 https->http 的转换规则:

LoadModule rewrite_module modules/mod_rewrite.so

 

<VirtualHost _default_:443>

……

<IfModule rewrite_module>

RewriteEngine On

RewriteRule ^/(.*)_nossl$ http://%{SERVER_NAME}/$1 [R,L]

RewriteRule ^/(.*)_ssl$ https://%{SERVER_NAME}/$1 [R,L]

</IfModule>

</VirualHost>

 

注:

  • 虽然ssl配置文件会被httpd.conf包括,LoadModule还是需要的;
  • <IfModule>…</IfModule>需要定义在VirtualHost内部。

 

4.       再根据规则修改页面中的URL。

 

哈哈,大功告成!

 
【Mode】FDE 求解器工作流程 Lumerical---FDE(Finite Difference Eigenmode) Solver 阅读详情

相关推荐

熵编码(五)-CABAC(一) 基础篇

前两篇算术编码文章介绍了算术编码原理和步骤。本篇文章介绍CABAC,基于上下文自适应的二进制算术编码。本文对CABAC的基本原理进行了详细的介绍和分析,下篇文章将会对H264编码中的CABAC熵编码的实际应用进行介绍。

尹佑壮的博客 3888

Linux Apache https 转 http

Linux Apache https 转 http /etc/httpd/conf/httpd.conf 中https强制转换注释 /etc/httpd/conf.d/ssl.conf 中ssl证书 整块代码注释 重启http服务 service httpd restart

weixin_46273637的博客 788

SAP FICO资产明细表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO资产明细表开发说明书(包括源代码,测试样例及FS)

我好像病了的博客 1472

Apache中http变https

下载SSL证书 只看此博客中一、二、三、四步 安装SSL证书 1)首先上传SSL证书,我用FileZilla Client上传在/root/ssl中: 2)修改apache配置文件 httpd-ssl.conf 我服务器系统是ubuntu,输入命令find / -name httpd-ssl.conf,出现以下结果: 这有几个版本的apache,用的是哪一个呢? 我的解决...

s1124yy 966

SAP UI5 OData V4 操作结果访问:从 getObject 到返回值上下文与 $$inheritExpandSelect

SAP UI5 OData V4 操作结果获取指南 摘要:在 SAP UI5 OData V4 模型中,操作结果需通过绑定上下文获取而非直接从 invoke() 返回。本文详解核心要点: 数据获取路径 使用 invoke() 发起请求后,通过 getBoundContext().getObject() 获取结果 特定场景下 invoke() 可能返回返回值上下文(如草稿切换) 关键实践技巧 使用 $$inheritExpandSelect 继承字段选择,避免二次读取 对象页应用中,通过替换绑定上下文实现无缝

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 316

Android 13 RK3588 编译烧写实录全程

本文详细记录了RK3588主板在Android 13系统下的各项功能测试与编译过程。主要内容包括:1)网络功能测试(以太网、WiFi、蓝牙连接);2)外设接口测试(耳机、麦克风、USB、TF卡);3)硬件功能验证(RTC时钟、ADC采样、MIPI摄像头);4)系统设置(手势导航、开发者选项);5)Android 13 SDK编译环境搭建与源码获取方法。通过图文并茂的方式展示了各功能的配置方法、操作步骤和测试结果,为开发者提供了全面的参考指南。

hnjzfwy的博客 241

APACHE代理https转发到http解决https跨域问题

昨天开发一个chrome插件浏览器插件:插件自动把当前浏览的页面html代码抓去,通过ajax的方式html代码发送到服务器解析。抓去的站点是https的,我们的解析就普通的tomcat用得的http,做的过程中遇到以下问题: was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://12...

mzllyl的专栏 3270

《网络存储技术》形考实训4:为小微企业搭建基于Windows Server的文件共享与权限管理服务

本文介绍了在域环境下部署DFS分布式文件系统的完整流程。项目目标是将3台存储服务器(NS1、NS2、NS3)上的多个共享文件夹通过DFS命名空间进行统一整合,使员工可通过单一访问路径访问所有资源。实施步骤包括:1)搭建AD域环境并创建用户/组;2)将存储服务器加入域并配置共享权限;3)在域控制器安装DFS命名空间角色;4)创建基于域的命名空间(\xc.cn\共享);5)将各服务器共享文件夹映射到命名空间;6)进行客户端访问验证。通过DFS实现了物理存储位置不变情况下的逻辑统一访问,提高了文件管理的便捷性和可

深耕计算机专业知识与技术。 946

怎样使用HTTPS协议

使用步骤及什么时候进行。

/*多学习 不油腻*/ 3547

Allegro如何导出和导入器件模型Signal_Model操作指导

在用Allegro做PCB设计的时候,通常需要给器件加上Signal_Model,在做等长的时候用到的非常频繁。如下图,需要把R7002的Signal_Model导入到另外一块没有给R7002加好模型的BRD中。Allegro除了可以给器件添加模型,还支持从一块加好模型的BRD导入到另外一块BRD中,如何导出和导入器件模型Signal_Model操作指导。

weixin_54787054的博客 1897

图像紫边消除(depurple)

对图像紫边形成原因、消除方法进行了介绍。

沧海一升的博客 7566

apache之http协议配置

apache之http协议配置 参考资料 Apache服务器的下载与安装 1.apache官网下载Apache HTTP Server服务器 1.打开apache官网 ,点击右上角Download, 2.出现目录列表,这些是apache的项目列表 3.点“httpd",出现以下界面 4.点红框部分,出现如下界面 6.进入如下界面后,选择第一项ApacheHaus,这是个第三方下载平台...

qq_40755047的博客 1430

基于OpenCV的实时疲劳检测系统实现

本文介绍了一个基于OpenCV的实时疲劳检测系统,使用Python实现。系统通过Haar级联分类器检测人脸和眼睛,计算眼睛宽高比(EAR)和PERCLOS(眼睛闭合时间比例)来评估疲劳程度,分为4个等级:正常、轻度、中度和重度疲劳。核心代码包含人脸眼睛检测、疲劳评估和可视化显示功能,具有实时性、稳定性和直观的视觉反馈。系统可通过摄像头实时监控驾驶员状态,为疲劳驾驶预警提供简单有效的解决方案。

weixin_62135607的博客 234

Apache从HTTP到HTTPS的实现

介绍 HTTPS和http是什么关系呢?相信很多人都有这个疑问,简单的说HTTPS=http+tls,http我们都知道,就是远程将数据显示在浏览器上的协议,tls是什么呢?安全传输层协议(TLS),简单的说,就是用于在两个通信应用程序之间的数据加密作用的。在重要场合,比如金钱交易等安全性要求高的网站,都会使用HTTPS协议。

ThinkerWalker 6243

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

安装配置Apache支持https和fcgi

Apache安装及配置 1.1 下载软件 1、Apr :(wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.1.tar.gz) 2、Apr-util :(wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz) 3、Pcre :(wget ftp://ftp.c

nyist327的专栏 3652

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

关于AJP HTTPS切换HTTP Session失效的问题

基础知识: Cookie有三种形式: 1.https only: 当服务器从https协议redirect到http协议后,这样的cookie就会失效。 2.http only: 当服务器从http协议redirect到https协议后,这样的cookie就会失效。 3.http and https: 协议切换不会失效   标准J2ee的Session使用的Cookie名称是 JSES...

solonote的专栏 377

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

透過ZeroSSL為Apache網站申請憑證

透過ZeroSSL為Apache網站申請憑證申請步驟SSL certificate setupSetup Apache download serverInstalling SSL Certificate on Apache參考連結 申請步驟 SSL certificate setup 首先到https://manage.sslforfree.com/login註冊一個帳號並登入後,會看到以下畫面: 點選Create SSL Certificate這一格的New Certificate。 在Enter D

keineahnung2345的博客 1943

httpClient 发送https

项目之前都是互发http请求,突然需要改https,发现https发送要比http有难度,现在记录一下; 1. pom.xml 引入的jar <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.5</version> </depend.

HDXxiazai的博客 373

apache mpm php 安全,Ubuntu Apache 切换到php-fpm+mpm_event模式

ubuntu通过apt安装的apache2默认是mpm_prefork模式,想要切换到mpm_event模式,PHP支持库也要改变。非root模式下注意加sudo首先要关掉普通的php模块:a2dismod php7.2apt-get remove libapache2-mod-php7.2然后才可以关掉mpm_prefork:a2dismod mpm_prefork然后启用mpm_event:a...

weixin_29382667的博客 223

event mpm php,Ubuntu Apache 切换到php-fpm+mpm_event模式

ubuntu通过apt安装的apache2默认是mpm_prefork模式,想要切换到mpm_event模式,PHP支持库也要改变。非root模式下注意加sudo首先要关掉普通的php模块:a2dismod php7.2apt-get remove libapache2-mod-php7.2然后才可以关掉mpm_prefork:a2dismod mpm_prefork然后启用mpm_event:a...

weixin_42576804的博客 306

nginx代理apche的ssl

nginx(ssl)代理apache(ssl)nginx和apache是在同一台机子上nginx配置:server { listen 80; server_name name.com; rewrite ^(.*)$ https://name.com$1 permanent;}(强制name.com跳转到https://name.co...

weixin_34279061的博客 147

httpd服务

Apache服务的编译安装 httpd的常用配置 虚拟主机 ssl

m0_72898391的博客 1886

马哥linux高薪中级-web服务器(续一)

2、工作模式切换 httpd支持三种模型,即perfork、worker、event模型。 三种模型的启动方法是不同的,perfork是默认的启动模型,通过httpd命令即可启动,可以通过rpm -ql |grep bin来看到有httpd、http.worker、http.event三个命令。 一般来说,apache的2.2版本之前并不支持ev...

weixin_34177064的博客 241

JMeter基础入门

JMeter是Apache下一款在国外非常流行和受欢迎的开源性能测试工具,JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。1、压测不同的协议和应用3) FTP5) LDAP 轻量目录访问协议8) TCP等等2、使用场景1)功能测试2)压力测试3)分布式压力测试3、优点1)纯java开发2)上手容易,高性能3)提供测试数据分析4)各种报表数据图形展示4、本地快速安装Jmeter4.x。

okcross0的博客 240

httpd

一个网站就是一个虚拟主机。

m0_64735681的博客 770

压力测试工具-JMeter

一、官网地址 https://jmeter.apache.org/ 二、JMeter是什么? 压力测试工具 三、下载 下载地址:http://jmeter.apache.org/download_jmeter.cgi 四、安装: 1.双击bin目录下的jmeter.bat文件,提示需要jdk1.8.(官网说需要jdk8以上的版本,见下图) ...

qq_41629684的博客 489
上一篇: YMU技术架构及数据库系统设计原则
下一篇: 如何在Apache中方便地切换http和https?
java_veteran
博客等级 码龄19年 2粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值