转自

Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https - OPEN 开发经验库
http://www.open-open.com/lib/view/open1404644133495.html

1          实现原理与工作流程

原理:

客户浏览器使用https协议访问 ApacheServer 。ApacheServer将请求转发到后端的Tomcat。ApacheServer与后端的Tomcat通信使用http协议。所以Tomcat不用开启https协议。把ApacheServer配置支持https协议就可以了。证书也在ApacheServer中配置。自始自终Tomcat都不需要修改任何地方。同理换成JBoss也一样,JBoss不需要修改。

更进一步,让客户浏览器访问http协议时,自动将http协议转成https协议就更加人性化了。这个技术也是在ApacheServer中配置完成。

工作流程:

1.       搭建ApacheServer服务器,支持https协议;(基础工作)

2.       搭建Tomcat服务器,配置基本的访问页面;(基础工作,整个功能不需要配置Tomcat)

3.       配置ApacheServer服务器,实现在https协议基础上将URL请求转发给Tomcat服务器;(关键)

4.       配置ApacheServer,实现访问http协议自动转成https协议。(关键)

2          搭建ApacheServer服务器

2.1       使用yum 安装apache

Apache版本

# httpd -v

Server version: Apache/2.2.15 (Unix)

Server built:   Aug 13 2013 17:29:28

2.2       检测Apache是否支持加密https协议

ll /etc/httpd/modules/

查看目录中是否有mod_ssl模块,若没有使用yum install mod_ssl安装,安装以后变化:

l  增加了/etc/httpd/modules/mod_ssl.so文件

l  增加了/etc/httpd/conf.d/ssl.conf配置文件

2.3       实现URl转发技术需要的模块

我们需要使用Apache的ProxyPass来转发URL后端,需要下面两个模块

mod_proxy.so

mod_proxy_http.so

我们还需要实现客户端浏览器访问http自动转成https协议,需要下面的模块

mod_rewrite.so

2.4       安装openssl提供ssl加密协议

使用yum 安装openssl

# yum install openssl

openssl version

OpenSSL 1.0.1e-fips 11 Feb 2013

注意:我们测试环境,不需要创建CA证书,生产环境中需要上传CA证书,并在ssl.conf文件中指定证书路径。

3          搭建Tomcat服务器

# tar zxf apache-tomcat-8.0.9.tar.gz

# mv apache-tomcat-8.0.9 /opt/tomcat

开启tomcat服务,测试使用tomcat默认页面就可以

# bin/startup.sh

访问192.168.1.10:8080出现tomcat默认页面,如下图:

Tomcat服务器搭建成功

1          配置Apache在http协议基础上使用ProxyPass转发URL到Tomcat(主要测试基本的ProxyPass的转发功能)

1)编辑/etc/httpd/conf/httpd.conf

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

#具备以上2行是说明apache具备将URL转发给Tomcat的能力

# 测试页面add by sxr

ProxyPass /examples http://192.168.1.10:8080/examples/

ProxyPassReverse /examples http://192.168.1.10:8080/examples/

测试,访问192.168.1.10/examples后,自动跳转到了后端Tomcat的192.168.1.10:8080/examples页面。

Tomcat提供的192.168.1.10:8080/examples页面

1          配置Apache在https协议中实现ProxyPass转发URL到Tomcat

实现原理:客户浏览器访问Apache的htts协议,在Aapache的ssl.conf配置文件中配置ProxyPass转发,将请求转发给后端的Tomcat服务器,这样就实现了在https协议的基础上Apache将URL转发给Tomcat。

注意:此时,客户端浏览器必须使用https://192.168.1.10/docs访问才能实现URL转发。

1)编辑/etc/httpd/conf/httpd.conf

Include conf.d/*.conf

#加载其他的配置文件,主要是为了使用ssl.conf

保存。

2)编辑 /etc/httpd/conf.d/ssl.conf,支持https协议

LoadModule ssl_module modules/mod_ssl.so

Listen 443

##

## SSL Virtual Host Context

##

<VirtualHost _default_:443>

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

<Files ~ "\.(cgi|shtml|phtml|php3?)$">

SSLOptions +StdEnvVars

</Files>

<Directory "/var/www/cgi-bin">

SSLOptions +StdEnvVars

</Directory>

SetEnvIf User-Agent ".*MSIE.*" \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

# 在https协议中实现ProxyPass转发URL,实际就是在ssl.conf中添加ProxyPass语句

ProxyPass /test http://192.168.1.10:8080/examples

ProxyPassReverse /test http://192.168.1.10:8080/examples

ProxyPass /docs http://192.168.1.10:8080/docs    注意,末尾没有/符号,http://192.168.1.10:8080/docs/是错误的

ProxyPassReverse /docs http://192.168.1.10:8080/docs

注意:转发到Tomcat的URL中末尾不能加/符号。如果写成ProxyPassReverse /docs http://192.168.1.10:8080/docs/ ,访问的结果如下图:

写成ProxyPassReverse /docs http://192.168.1.10:8080/docs,访问的结果如下图:

2          配置Apache,实现http自动转换成https协议

上面,我们已经完成了在https协议上实现将URL转发给Tomcat。接下来,我们只要配置Apache,实现http自动转成https协议,就能够让客户端浏览器输入普通地址自动跳转到加密的https的页面,并且页面还是后端Tomcat服务提供的功能。

编辑/etc/httpd/conf/httpd.conf配置文件,下面语句实现将整个Apache站点都自动转成https协议

# add by sxr

RewriteEngine on

RewriteCond %{SERVER_PORT} 80

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteLog /var/log/httpd/rewrite.log

RewriteLogLevel 10

保存,重启Apache服务生效

# /etc/init.d/httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                            [  OK  ]

Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https【转载】的更多相关文章

  1. apache将请求转发到到tomcat应用

    映射: 1.开启apache中的proxy模块(proxy.conf,proxy.load,proxy_http.load) 2.配置apache配置文件,<VirtualHost *:80&g ...

  2. Apache的ProxyPass简单使用

    转: Apache的ProxyPass简单使用 置顶 2017年08月14日 18:54:33 师太,老衲把持不住了 阅读数:11164   http://mtnt2008.iteye.com/blo ...

  3. apache、mod_jk负载均衡与tomcat集群

    最近需要搭建apache和tomcat的集群,实现静态网站直接通过apache访问,动态网站转交给tomcat处理,实现负载均衡和tomcat集群配置. apache安装 wget http://ap ...

  4. 源码安装apache及配置转发

    一.    安装Apache a)    解压:tar -xvf httpd-*; b)    ./configure --prefix=/usr/oracle/apache CC="gcc ...

  5. 转发URL请求

    如何用Netty实现一个轻量级的HTTP代理服务器 - Newland - 博客园 https://www.cnblogs.com/jietang/p/8926325.html 现在迫切希望有一个HT ...

  6. Apache Server与多个独立Tomcat集成

    取经自http://www.ramkitech.com/2012/03/virtual-host-apache-httpd-server-tomcat.html 继续干Tomcat和Apache Se ...

  7. Java GC专家系列4:Apache的MaxClients设置及其对Tomcat Full GC的影响

    本文是GC专家系列中的第四篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种GC ...

  8. Web服务器(Apache)与Servlet容器(Tomcat)

    之前一直比较迷惑Apache与Tomcat的关系,通过查询资料,有所了解,现记录于此. Apache与Tomcat 两者定位:Apache是HTTP Web服务器,Tomcat是Web容器. 有一个非 ...

  9. Nginx应用-Location路由反向代理及重写策略 请求转发-URL匹配规则 NGINX Reverse Proxy

    NGINX Docs | NGINX Reverse Proxy https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ ...

随机推荐

  1. 写一个CGI程序并运行

    准备Linux和Apache我在/var/www/cgi-bin/下建一个文件get.c #include <stdio.h> #include <stdlib.h> int ...

  2. Xcode最最实用快捷键

      转发:http://www.open-open.com/lib/view/open1397988745593.html 关于与mac 通用的快捷键网上太多,就不说了,下面介绍一些大家不是很熟悉但是 ...

  3. Python 查找binlog文件

    经常需要在 binlog 中查找一些日志信息,于是写了一个简单的脚本.对于非常巨大的 binlog 文件,该脚本可能会速度慢,毕竟还是用的 list,暂时没想到好办法. 详细看代码: #/usr/bi ...

  4. TD缺陷通过excel导入QC11.0缺陷库

    在将TD升级到QC之前,参考了各种升级的方式,但是最终发现用excel导入缺陷到QC库是最简单方便的方法,实施步骤如下:1,首先登陆TD,将缺陷的所有信息显示在界面,然后使用缺陷工具将页面所有缺陷保存 ...

  5. linux设置时间服务器

    对多个linux服务器,时间保持一致是很必要的.根据精确度要求,应该有相应的时间间隔进行时间同步.如果不进行时间同步,时间久了就会差别很大,遇到问题时定位就很困难.因为多台设备的配合,log之间可能有 ...

  6. 外部VBS的调用

    一.QTP调用外部VBS的方法 加到QTP的Resource中 在QTP菜单中设置, 菜单FileàSettingsàResource,将要加载的VB脚本添加进来. 举例: 步骤1:在D盘下新建一个V ...

  7. 如何利用Visual studio 2010创建一个ASP网站?

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserLogin.aspx.c ...

  8. Ajax应用-定义一套自己的Ajax框架

    —————————————————————————— <script type="text/javascript">            //定义个一个functio ...

  9. Java实现Redis持久化到数据库的关键方法

    import java.util.Date; import java.util.Iterator; import java.util.Set;   import redis.clients.jedis ...

  10. petstore-jdbc

    拖了好多天,终于决定开始写作业了,搞了大半天的把软件安好. jdk(安装与环境配置) Tomcat(安装与环境配置) mysql(安装,同时配置图形化操作界面) eclipse for Javaee ...