免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11418 | 回复: 17
打印 上一主题 下一主题

[Web] [安装配置] Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-09 15:50 |只看该作者 |倒序浏览
# ver 1.0  by jhsea3do (Jul.9th.2005)
# 本文仅涉及配置,不涉及各插件的安装
# 本文适合对apache配置比较熟悉的朋友,文中配置内容均最为最简化,但附有注释,请自行修改添加内容
# 本文参考文档为apache网站的官方文档,对于文中没有涉及或者不解之处请多参考该文档。
# 本文中的调试环境将在下面提到,但应该同样适合于其他环境,比如linux, tomcat4, 本文可能对apache 1.x 不适用
# 如转载本文,请注明作者为 jhsea3do@gmail.com, 谢谢

=========================================================


看到论坛上老有人对JK配置不解,结合我长期的使用经验,我再炒一次冷饭, 希望有问题的人能够细细品尝

另外本文中提到的JK不是指mod_jk2,jk2项目已经停止了开发和技术支持,原因是效率方面的问题,apache官方推荐使用mod_jk

以下配置为文中涉及的内容
jakarta-tomcat-5.0.30
Apache/2.0.52 (Win32)
mod_ssl/2.0.52 OpenSSL/0.9.7e
mod_jk/1.2.13

文章分以下三部分进行说明
1. 配置Apache虚拟主机(基于域名)
3. 配置JK
2. 配置SSL

如打算按照本文内容试验,可以先做好以下3个域名的本地解析
  

  1.    # %windir%\system32\drivers\etc\hosts  ||  /etc/hosts
  2.    127.0.0.1       localhost lcl.javaws.com
  3.    192.168.1.2        www.javaws.com dyn.javaws.com
  4.    
复制代码



=========================================================

[ 本帖最后由 HonestQiao 于 2006-7-13 11:48 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-07-09 15:51 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

1. 配置Apache虚拟主机
---------------------

a. 注释httpd.conf中的以下内容,删除默认主机
  

  1.    #ServerAdmin
  2.    #ServerName
  3.    #DocumentRoot
  4.    
复制代码


b. 确保vhost的支持模块被apache加载
  

  1.    LoadModule vhost_alias_module modules/mod_vhost_alias.so
  2.    
复制代码


c. 并添加如下内容,其中3个conf文件代表了3个虚拟主机lcl, dns, dyn
  

  1.    # Use vHost
  2.    NameVirtualHost *:80
  3.    NameVirtualHost *:443
  4.    <IfModule mod_vhost_alias.c>;
  5.      Include conf/sites/com.javaws.lcl.conf
  6.      Include conf/sites/com.javaws.www.conf
  7.      Include conf/sites/com.javaws.dyn.conf
  8.    </IfModule>;
  9.    
复制代码

       
d. 在conf目录下建立sites目录,创建 com.javaws.lcl.conf文件,并配置lcl主机的内容
  

  1.    # lcl.javaws.com
  2.    #
  3. <VirtualHost *:80>;
  4.    ServerAdmin        jhsea3do@lcl.javaws.com               
  5.    DocumentRoot        "D:/www/com/javaws/lcl"
  6.    ServerName                lcl.javaws.com
  7.    ServerAlias        127.0.0.1 localhost                # 该虚拟主机别名
  8.    ErrorLog        logs/sites/lcl.javaws.com-error_log        # 注意建立在logs目录下建立相关的sites目录
  9.    CustomLog        logs/sites/lcl.javaws.com-access_log common
  10.    #
  11.    <Directory "D:/www/com/javaws/lcl">;
  12.      Options FollowSymLinks
  13.      AllowOverride None
  14.      Order allow,deny
  15.      Deny from all
  16.    </Directory>;
  17.    #
  18. </VirtualHost>;
  19.    
复制代码


e. 根据上面的文件配置其他的主机内容,保存httpd.conf,重启apache2,在3个虚拟主机上放置不同的文件,应该能在浏览器中使用对应的域名访问到

论坛徽章:
0
3 [报告]
发表于 2005-07-09 15:51 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

2. 配置JK
---------

a. 确保mod_jk的支持模块被apache加载
  

  1.    LoadModule jk_module modules/mod_jk.so
  2.    
复制代码


b. 配置httpd.conf使其加载workers的配置文件(该文件为全局配置文件,请勿放入虚拟机的配置文件中)
  

  1.    # Use mod_jk
  2.    <IfModule mod_jk.c>;
  3.      JkWorkersFile                conf/jks/workers.properties
  4.    </IfModule>;
  5.    
复制代码


   以下为workers.properties文件的内容
  

  1.    # workers.properties.minimal
  2.    #
  3.    worker.list=localhost,jkstatus                        # 共有两个worker可供使用
  4.    #
  5.    worker.localhost1.type=ajp13                                # worker localhost1 对应的 jk socket (private worker)
  6.    worker.localhost1.host=localhost
  7.    worker.localhost1.port=8009
  8.    #
  9.    worker.localhost.type=lb                                # worker localhost 使用负载均衡模式 (public worker)
  10.    worker.localhost.balance_workers=localhost1                # 仅使用 localhost1 作为 localhost 的负载均衡,
  11.    #                                                        # 如果你有多个private worker,可以放在balance中
  12.    #
  13.    worker.jkstatus.type=status                                # worker jkstatus 使用 status 模式
  14.    
复制代码


c. 编辑com.javaws.lcl.conf,配置lcl主机,使其支持 jk
   * 该配置代码应该和<Directory />;配置平级
  

  1.    #
  2.    <IfModule mod_jk.c>;
  3.      JkMountFile        conf/jks/jk1.com.javaws.lcl.urimaps.properties                # urimaps 配置文件
  4.      JkLogFile                logs/sites/lcl.javaws.com-jk-info_log                        # jk的日志
  5.      JkLogLevel                info                                                        # jk的日志纪录等级
  6.    </IfModule>;
  7.    
复制代码


   以下为jk1.com.javaws.lcl.urimaps.properties文件的内容
  

  1.    # jk1.com.javaws.lcl.urimaps.properties
  2.    #
  3.    /*.jsp=localhost                                # 所有uri为*.jsp结尾的http请求均转交localhost worker处理
  4.    /*.jspa=localhost                                # 所有uri为*.jspa结尾的http请求均转交localhost worker处理
  5.    /*.do=localhost                                # 所有uri为*.do结尾的http请求均转交localhost worker处理
  6.    /servlets/*=localhost                        # 所有uri为/servlets/目录下的http请求均转交localhost worker处理
  7.    /admin/*=localhost                                # 所有uri为/admin/目录下的http请求均转交localhost worker处理
  8.    #
  9.    !/admin/*.gif=localhost                        # /admin/ 目录下的 gif, jpg 无需由jk处理
  10.    !/admin/*.jpg=localhost                        # ...
  11.    !/servlets/*.gif=localhost
  12.    !/servlets/*.jpg=localhost
  13.    #
  14.    /jkmanager=jkstatus                                # 所有uri为/jkmanager/目录下的http请求均转交jkstatus worker处理
  15.    
复制代码


d. 启动 tomcat , 确保 tomcat 加载了 ajp13 handle

e. 保存以上配置,重启apache2, 这样可以访问对应的java uri

论坛徽章:
0
4 [报告]
发表于 2005-07-09 15:52 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

3. 配置SSL(如果不需要配置,可以略过)
------------------------------------

a. 制作密钥和证书:ssl-javaws.com.crt、ssl-javaws.com.key, 确保mod_ssl的支持模块被apache加载,win32版本的bin building不提供ssl支持(出于安全考虑),请用msvc60自行编译
  

  1.    LoadModule ssl_module modules/mod_ssl.so
  2.    
复制代码


b. 为需要SSL支持的站点配置加密的主机,比如lcl主机,可以在该主机的配置文件下加入:
   * 该配置代码应该和<VirtualHost />;配置平级
  

  1. <VirtualHost *:443>;
  2.    ServerAdmin        jhsea3do@lcl.javaws.com               
  3.    DocumentRoot        "D:/www/com/javaws/lcl"
  4.    ServerName                lcl.javaws.com
  5.    ServerAlias        127.0.0.1 localhost                # 该虚拟主机别名
  6.    ErrorLog        logs/sites/lcl.javaws.com-error_log        # 注意建立在logs目录下建立相关的sites目录
  7.    CustomLog        logs/sites/lcl.javaws.com-access_log common
  8.    #
  9.    <IfModule mod_ssl.c>;
  10.      SSLEngine on               
  11.      SSLCipherSuite                ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNUL
  12.      SSLCertificateFile                "conf/certs/ssl-javaws.com.crt"
  13.      SSLCertificateKeyFile        "conf/certs/ssl-javaws.com.key"
  14.      <Files ~ "\.(cgi|shtml|phtml|php3?)$">;                # 对于CGI文件设置环境变量
  15.        SSLOptions +StdEnvVars
  16.      </Files>;
  17.      SetEnvIf User-Agent ".*MSIE.*" \                        # 对于一些浏览器设置环境变量
  18.        nokeepalive ssl-unclean-shutdown \
  19.        downgrade-1.0 force-response-1.0
  20.      CustomLog logs/ssl-request_log \                        # 日志纪录
  21.        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
  22.    </IfModule>;
  23.    #
  24.    <Directory "D:/www/com/javaws/lcl">;
  25.      Options FollowSymLinks
  26.      AllowOverride None
  27.      Order allow,deny
  28.      Deny from all
  29.    </Directory>;
  30.    #
  31. </VirtualHost>;
  32.    
复制代码


c. 配置原80端口的主机的所有请求均转发到443端口上,此处需要打开mod_rewrite
  

  1.    LoadModule rewrite_module modules/mod_rewrite.so
  2.    
复制代码

   * 以下配置内容位于80端口虚拟主机的配置文件中,配置代码应该和<Directory />;配置平级
  

  1.     <IfModule mod_ssl.c>;
  2.       RewriteCond  %{REMOTE_HOST}                lcl\.javaws\.com\.org$
  3.       RedirectMatch ^/(.*)                        https://lcl.javaws.com/$1
  4.       RewriteCond  %{REMOTE_HOST}                localhos\.org$
  5.       RedirectMatch ^/(.*)                        https://localhost/$1
  6.       RewriteCond  %{REMOTE_HOST}                127\.0\.0\.1$
  7.       RedirectMatch ^/(.*)                        https://127.0.0.1/$1
  8.     </IfModule>;
  9.    
复制代码


d. 保存,使设置生效,开浏览器检查实际结果


=========================================================

Fin

论坛徽章:
0
5 [报告]
发表于 2005-07-21 13:19 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

好文--现在还有人说用jk2呢。

论坛徽章:
0
6 [报告]
发表于 2005-08-16 02:44 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

<VirtualHost *:443>;这个有什么意义吗?
https不支持virtualhost的,不是技术的原因,而是安全策略的原因。

补充一下,我的意思是说https不支持name-based virtualhost,使用不同的端口还是可以的。解释在这里http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2

[ 本帖最后由 perryhg 于 2006-7-4 13:30 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2005-08-16 10:40 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

按我的配置方法的确可以多个https站点并存

我的确是不知道这方面相关安全策略方面的知识,你能说一下或者介绍相关的文章么?

论坛徽章:
0
8 [报告]
发表于 2005-09-14 09:54 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

为什么我配置虚拟主机时 需要在APACHE  和 TOMCAT里面都进行配置?
jhsea3do能帮我解答解答吗?

论坛徽章:
0
9 [报告]
发表于 2005-09-14 16:03 |只看该作者

Tomcat JK(NOT JK2) Apache2 带SSL/vHost 整合

原帖由 "tony-jia" 发表:
为什么我配置虚拟主机时 需要在APACHE  和 TOMCAT里面都进行配置?
jhsea3do能帮我解答解答吗?


因为apache和tomcat工作在不同的端口,两个不同的服务
你配置虚拟主机就必须两个都配置

论坛徽章:
0
10 [报告]
发表于 2006-07-04 01:23 |只看该作者
你使用的是RedirectMatch,这个不算是虚拟主机啊,用户的浏览器会被重定向到最终指定的目标上去。这个跟<VirtualHost *:443>没有任何关系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP