`
java.guru
  • 浏览: 65149 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多

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

<o:p> </o:p>

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

<o:p> </o:p>

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

<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>

哈哈,大功告成!

分享到:
评论

相关推荐

    Apache的POI开发实例

    对于一个Excel文件,这称为一个工作簿(Workbook),打开Excel之后,在下方会有sheet1/2/3这样的选项卡,点击可以切换到不同的sheet中,这个sheet称作工作表。每个工作表就是我们编辑的区域,这是一张二维表,阿拉伯...

    Java版本选择切换工具

    通过Java版本切换工具,用户可以方便地管理不同Java版本的安装路径和环境配置,避免环境混乱的问题。 特点: 支持多厂商、多版本的JDK切换,包括Corretto、Dragonwell、IBM、Kona、OpenJdk、OracleJdk、RedHat等。...

    apache-maven-3.8.4d

    1.apache-maven-3.8.4 2.可用于Maven项目 3.已经切换为国内的镜像,方便build 4.亲测好用 本文设置积分5积分,并不允许调分,如有修改可单独联系博主发放百度链接

    python修改apache网站路径的小工具

    这个小工具是修改以apache为服务器的小工具,方便那些经常需要在apache中手工去输入路径来切换网站目录的朋友们, 运行它,只需把目标路径粘贴进来,点确定就可以了,它自动修改路径并重启apache. 运行前请看压缩包...

    phpStudy 最新 Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend 稳定 强大

    4、本程序纯绿色,支持22种组合一键切换,支持系统服务和非服务两种启动方式,自由切换。改变安装路径或拷贝到别的电脑上也可正常运行;即便是运行完再更改路径也能运行,真正做到无须配置。重写控制面板更加有效...

    php环境搭建(PHP环境套件)支持700个php版本随意切换

    3、拥有开发模式与运营模式,集成组件未阉割,切换运营模式,即可直接运行在服务器端 4、拥有“强制修改任意环境的Mysql数据库密码”功能,忘记数据库密码可以一键强制修改。 5、运行中的网站可瞬间强制删除,也能...

    php环境搭建、专业php环境套件下载(支持700个PHP版本随意切换)

    3、拥有开发模式与运营模式,集成组件未阉割,切换运营模式,即可直接运行在服务器端 4、拥有“强制修改任意环境的Mysql数据库密码”功能,忘记数据库密码可以一键强制修改。 5、运行中的网站可瞬间强制删除,也能...

    phpstudy-pro

    多版本支持:PHPStudy Pro 支持同时安装多个版本的 PHP、Apache/Nginx、MySQL 等软件,方便用户在不同项目中切换使用。 扩展支持:PHPStudy Pro 内置了常用的 PHP 扩展和组件,用户可以方便地启用或禁用它们,满足...

    pawnee:OSX的Apache GUI

    OSX的Apache GUI。 下载 34Mb-需要Mac OS 10.10 特征 Pawnee是一个菜单栏实用程序,旨在帮助您管理本地Apache安装。 功能按面板进行组织: 控制板 描述 PHP 检测已安装PHP版本(使用 ),以便轻松切换 虚拟主机 ...

    apache-jmeter-5.1.1.zip

    jmeter5.1优化项: 1. GUI启动改为中文(默认英文) 2. sampleresult默认编码为ISO-8859-1改为UTF-8 3. 根目录快捷方式 4. 增加脚本模版example目录,包括常用各种...13.增加批量报告汇总,方便快速那结果数据写报告

    WCPSOFTAMP集成开发环境(PHP集成开发环境)V1.0.1.1.zip

    节省了新手学习PHP配置环境的时间,同时也是开发者在开发过程中可以快速切换不同的版本运行,使程序更加通用更加稳定。 WCPSOFTAMP v1.0.1.1 2011-5-10 1.修复MYSQL服务无法正常卸载 2.最新的UI版本 3.新增PHP5.4的...

    TortoiseSVN v1.12.1.28628(大名鼎鼎的SVN)

    SVN提供了一种分支和标签的机制,可以方便地在不同的版本之间进行切换和管理。分支可以让开发者在不影响主干的情况下进行开发,标签则可以对代码进行打标记,方便以后的查找和管理。 SVN还提供了一些高级的功能,如...

    ThinkPHP v5.0.24 完整版

    库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的开发和部署...

    phpwamp下载

    添加站点后,就可以在左侧的站点列表看到了,这种方式添加的站点是端口模式,如果想用域名模式,在添加的时候输入域名即可,此站点管理是域名模式和端口模式通用。 多功能php绿色集成环境,700个PHP版本随时切换。 ...

    纯绿色PHP环境套件安装包

    添加站点后,就可以在左侧的站点列表看到了,这种方式添加的站点是端口模式,如果想用域名模式,在添加的时候输入域名即可,此站点管理是域名模式和端口模式通用。 多功能php绿色集成环境,700个PHP版本随时切换。 ...

    缺少系统文件,如110.dll,140dll等问题

    vc2008 vc2010 vc2012 vc2013 vc2015 140.dll 解决Wamp安装时报错问题 WCPSOFTAMP是一个PHP...节省了新手学习PHP配置环境的时间,同时也是开发者在开发过程中可以快速切换不同的版本运行,使程序更加通用更加稳定

    php集成环境一键搭建工具箱

    php程序员工具箱集合了Apache和Mysql,可以一键搭建和配置!并且有多个版本可以进行切换!... 问答社区程序员交流汇聚地,最全的IT编程相关的问答类目,遇到各种编程问题都可以在此提问,每个问题都有高手解答!

    MAMP Pro for Mac 5.0.1.zip

    MAMP Pro for mac是Mac OS平台搭建本地服务器环境的组合...透过Web界面稍作设定,在苹果电脑上架设自己专属的网站,就是这么简单又开心的事情和windows下的XAMPP,Linux下的LAMP一样。都是Apache Mysql PHP的集成环境。

    ThinkPHP v5.0.24 核心版

    在项目配置、类 库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的...

Global site tag (gtag.js) - Google Analytics