#vi /etc/httpd/conf/httpd.conf

添加下面配置

NameVirtualHost *:80

<VirtualHost *:80>
ProxyPreserveHost On
ServerName www.域名.com
ProxyPass / http://www.域名.com:8080/system/
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>

作者:沈小然

编写日期:2014年7月6日

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转发到Tomcat的更多相关文章

  1. apache httpd, nginx, tomcat, jboss

    web上的server都叫web server,但是大家分工也有不同的. nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什 ...

  2. nginx配置https转发到tomcat(使用自签名的证书)

    一.使用openSSL生成自签名的证书 1.生成RSA私钥 命令:openssl genrsa -des3 -out server.key 1024 说明:生成rsa私钥,des3算法,1024强度, ...

  3. apache server和tomcat集群配置一:水平负载

    下载apache  server,最新链接http://archive.apache.org/dist/httpd/binaries/win32 当前实验版本2.2.4 下载apache  tomca ...

  4. 转发有关tomcat和nginx

    nginx 与 tomcat 组合搭建web服务   部分内容转自 http://www.cnblogs.com/naaoveGIS/ 1. Web服务 nginx是常用的web服务器,用于获取静态资 ...

  5. java.io.FileNotFoundException: D:\Program%20Files\Apache%20Software%20Foundation\Tomcat%205.0\webapp

    慢慢把以前遇到过的问题一点点发出来,以前做的笔记比较杂: java.io.FileNotFoundException: D:\Program%20Files\Apache%20Software%20F ...

  6. Apache服务器和tomcat服务器有什么区别(转)

    Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行.Apache是Web服务器而Tomcat是Java应用服务器. A ...

  7. 查看nginx | apache | php | tengine | tomcat版本的信息以及如何隐藏版本信息【转】

    转自: 查看nginx | apache | php | tengine | tomcat版本的信息以及如何隐藏版本信息 - 追马 - 51CTO技术博客http://lovelace.blog.51 ...

  8. Apache+modjk布置tomcat集群

    一.版本: Apache: 2.2.14: 下载地址:http://archive.apache.org/dist/httpd/binaries/win32/ Mod_jk:tomcat-connec ...

  9. Apache服务器和tomcat服务器有什么区别?

    Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的 Web服务器运行.Apache是Web服务器而Tomcat是Java应用服务器. ...

随机推荐

  1. Qt 学习之路 2(34):贪吃蛇游戏(4)

    Qt 学习之路 2(34):贪吃蛇游戏(4) 豆子 2012年12月30日 Qt 学习之路 2 73条评论 这将是我们这个稍大一些的示例程序的最后一部分.在本章中,我们将完成GameControlle ...

  2. nodejs fs读取静态json文件

    let fs = require('fs'),stream = fs.createReadStream('./obd.json'),data = ""; stream.on('da ...

  3. AtCoder Beginner Contest 113 C

    C - ID Time limit : 2sec / Memory limit : 1024MB Score: 300 points Problem Statement In Republic of ...

  4. BZOJ - 2844 线性基

    题意:求给定的数在原数组中的异或组合中的排名(非去重) 因为线性基中\(b[j]=1\)表示该位肯定存在,所以给定的数如果含有该位,由严格递增和集合枚举可得,排名必然加上\(2^j\)(不是完全对角就 ...

  5. [转] CSS 颜色名

    [From] http://www.w3school.com.cn/cssref/css_colornames.asp CSS 颜色名 所有浏览器都支持的颜色名. HTML 和 CSS 颜色规范中定义 ...

  6. python-基础学习篇(一)

    python基础学习(一) 不积硅步,无以至千里.基础的学习越加透彻,才能更清楚的理解和分析需求,我贯彻基础学习“永无止境”的理念,故把自学的知识梳理在博客中,基础学习篇无限更新. python介绍 ...

  7. JavaEE 数据库随机值插入测试

    package com.jery.javaee.dbtest; import java.sql.Connection; import java.sql.DriverManager; import ja ...

  8. PIE SDK线元素的绘制

    1. 功能简介 在数据的处理中会用到线元素的绘制,目前PIE SDK支持ILineSymbol的线元素的绘制,LineSymbol对象是用于修饰线状对象的符号,它包括CartographicLineS ...

  9. mysql GPID学习

    1.为什么引入GPID? 解决主备复制的延时问题 单线程太慢, 多线程复制的问题是:最终数据可能不一致 MySQL主从延时这么长,要怎么优化? 2. 引入后有哪些缺点 不支持create table ...

  10. sql语句中开窗函数的使用

    开窗函数主要分为2类: 1.排序开窗函数: rank() over(partition by xxx order by yyy) //各分区按照yyy字段排序,如果yyy字段值一样,则rank值一样, ...