在YMU系统中,我们使用Apache 2.x作为前端Web Server,用于静态内容的保存和获取,及动态内容向后端Web Server(Tomcat)的转发;同时Apache 2.x也承担Tomcat服务器之间的负载均衡器。
<o:p> </o:p>
从性能方面考虑,YMU系统的大部分页面采用http协议传输。而某些页面,如注册、登录和修改密码等安全性要求高的页面,则需要采用https协议进行传输。
<o:p> </o:p>
如何在http及https协议之间转换?最直接的办法是采用绝对路径,此方法优点是间接明了,缺点是移植性差。一个比较好的方法是使用Apache的rewrite模块对相对路径进行转换,从而达到协议转换的目的。
<o:p> </o:p>
我们可以在Apache的官方文档中找到http/https切换的相关说明:
RewriteEngine on<o:p></o:p>
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L]<o:p></o:p>
RewriteRule ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1 [R,L]<o:p></o:p>
<o:p> </o:p>
如果直接定义在httpd.conf,则会有以下问题:
- <!----> <!---->在页面中点击这些特殊的URL(login.html:SSL)时,浏览器会报协议错误,它把:SSL前面的内容(login.html)当作协议了;
- <!----> <!---->如果把“:”改成“_”或其他字符,则http可以转到https了,而https则不能转成http。什么原因呢?看了很多文档,才发现rewrite规则设置是针对虚拟主机的,而443端口被配置成另外的虚拟主机,所以就规则就失效了,还得在ssl配置文件(httpd-ssl.conf)中设置转发规则。
<o:p> </o:p>
下面举例说明配置过程。假设我们在相对路径url后增加_ssl表示以https协议装载url;而url后面增加_nossl则用于在https页面中跳转回http协议。配置步骤如下:
<o:p> </o:p>
<!---->1. <!---->编译Apache时,生成rewrite模块(mod_rewrite.so);
<!---->2. <!---->在httpd.conf中装载rewrite模块,并定义http->https的转换规则:
LoadModule rewrite_module modules/mod_rewrite.so<o:p></o:p>
<o:p> </o:p>
<ifmodule rewrite_module=""><o:p></o:p></ifmodule>
RewriteEngine On <o:p></o:p>
#RewriteLog "/usr/local/apache2/logs/rewrite.log"<o:p></o:p>
#RewriteLogLevel 10<o:p></o:p>
RewriteRule ^/(.*)_ssl$ https://%{SERVER_NAME}/$1 [R,L]<o:p></o:p>
<o:p></o:p>
RewriteRule ^/(.*)_nossl$ http://%{SERVER_NAME}/$1 [R,L]<o:p>
</o:p>
其中:
- <!----> <!---->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<o:p></o:p>
<o:p> </o:p>
<virtualhost _default_:443=""><o:p></o:p></virtualhost>
……<o:p></o:p>
<ifmodule rewrite_module=""><o:p></o:p></ifmodule>
RewriteEngine On<o:p></o:p>
RewriteRule ^/(.*)_nossl$ http://%{SERVER_NAME}/$1 [R,L]<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
<o:p> </o:p>RewriteRule ^/(.*)_ssl$ https://%{SERVER_NAME}/$1 [R,L]
注:
- <!----> <!---->虽然ssl配置文件会被httpd.conf包括,LoadModule还是需要的;
- <!----><!----><ifmodule>…</ifmodule>需要定义在VirtualHost内部。
<o:p> </o:p>
<!---->4. <!---->再根据规则修改页面中的URL。
<o:p> </o:p>
哈哈,大功告成!
分享到:
相关推荐
对于一个Excel文件,这称为一个工作簿(Workbook),打开Excel之后,在下方会有sheet1/2/3这样的选项卡,点击可以切换到不同的sheet中,这个sheet称作工作表。每个工作表就是我们编辑的区域,这是一张二维表,阿拉伯...
通过Java版本切换工具,用户可以方便地管理不同Java版本的安装路径和环境配置,避免环境混乱的问题。 特点: 支持多厂商、多版本的JDK切换,包括Corretto、Dragonwell、IBM、Kona、OpenJdk、OracleJdk、RedHat等。...
1.apache-maven-3.8.4 2.可用于Maven项目 3.已经切换为国内的镜像,方便build 4.亲测好用 本文设置积分5积分,并不允许调分,如有修改可单独联系博主发放百度链接
这个小工具是修改以apache为服务器的小工具,方便那些经常需要在apache中手工去输入路径来切换网站目录的朋友们, 运行它,只需把目标路径粘贴进来,点确定就可以了,它自动修改路径并重启apache. 运行前请看压缩包...
4、本程序纯绿色,支持22种组合一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效...
3、拥有开发模式与运营模式,集成组件未阉割,切换运营模式,即可直接运行在服务器端 4、拥有“强制修改任意环境的Mysql数据库密码”功能,忘记数据库密码可以一键强制修改。 5、运行中的网站可瞬间强制删除,也能...
3、拥有开发模式与运营模式,集成组件未阉割,切换运营模式,即可直接运行在服务器端 4、拥有“强制修改任意环境的Mysql数据库密码”功能,忘记数据库密码可以一键强制修改。 5、运行中的网站可瞬间强制删除,也能...
多版本支持:PHPStudy Pro 支持同时安装多个版本的 PHP、Apache/Nginx、MySQL 等软件,方便用户在不同项目中切换使用。 扩展支持:PHPStudy Pro 内置了常用的 PHP 扩展和组件,用户可以方便地启用或禁用它们,满足...
OSX的Apache GUI。 下载 34Mb-需要Mac OS 10.10 特征 Pawnee是一个菜单栏实用程序,旨在帮助您管理本地Apache安装。 功能按面板进行组织: 控制板 描述 PHP 检测已安装PHP版本(使用 ),以便轻松切换 虚拟主机 ...
jmeter5.1优化项: 1. GUI启动改为中文(默认英文) 2. sampleresult默认编码为ISO-8859-1改为UTF-8 3. 根目录快捷方式 4. 增加脚本模版example目录,包括常用各种...13.增加批量报告汇总,方便快速那结果数据写报告
节省了新手学习PHP配置环境的时间,同时也是开发者在开发过程中可以快速切换不同的版本运行,使程序更加通用更加稳定。 WCPSOFTAMP v1.0.1.1 2011-5-10 1.修复MYSQL服务无法正常卸载 2.最新的UI版本 3.新增PHP5.4的...
SVN提供了一种分支和标签的机制,可以方便地在不同的版本之间进行切换和管理。分支可以让开发者在不影响主干的情况下进行开发,标签则可以对代码进行打标记,方便以后的查找和管理。 SVN还提供了一些高级的功能,如...
库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的开发和部署...
添加站点后,就可以在左侧的站点列表看到了,这种方式添加的站点是端口模式,如果想用域名模式,在添加的时候输入域名即可,此站点管理是域名模式和端口模式通用。 多功能php绿色集成环境,700个PHP版本随时切换。 ...
添加站点后,就可以在左侧的站点列表看到了,这种方式添加的站点是端口模式,如果想用域名模式,在添加的时候输入域名即可,此站点管理是域名模式和端口模式通用。 多功能php绿色集成环境,700个PHP版本随时切换。 ...
vc2008 vc2010 vc2012 vc2013 vc2015 140.dll 解决Wamp安装时报错问题 WCPSOFTAMP是一个PHP...节省了新手学习PHP配置环境的时间,同时也是开发者在开发过程中可以快速切换不同的版本运行,使程序更加通用更加稳定
php程序员工具箱集合了Apache和Mysql,可以一键搭建和配置!并且有多个版本可以进行切换!... 问答社区程序员交流汇聚地,最全的IT编程相关的问答类目,遇到各种编程问题都可以在此提问,每个问题都有高手解答!
MAMP Pro for mac是Mac OS平台搭建本地服务器环境的组合...透过Web界面稍作设定,在苹果电脑上架设自己专属的网站,就是这么简单又开心的事情和windows下的XAMPP,Linux下的LAMP一样。都是Apache Mysql PHP的集成环境。
在项目配置、类 库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的...