# 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个域名的本地解析
[code:1:092fa398c2]
# %windir%\system32\drivers\etc\hosts || /etc/hosts
127.0.0.1 localhost lcl.javaws.com
192.168.1.2 www.javaws.com dyn.javaws.com
[/code:1:092fa398c2]
=========================================================
jhsea3do 回复于:2005-07-09 15:51:28 | |
1. 配置Apache虚拟主机
--------------------- a. 注释httpd.conf中的以下内容,删除默认主机 [code:1:93ed16b4fc] #ServerAdmin #ServerName #DocumentRoot [/code:1:93ed16b4fc] b. 确保vhost的支持模块被apache加载 [code:1:93ed16b4fc] LoadModule vhost_alias_module modules/mod_vhost_alias.so [/code:1:93ed16b4fc] c. 并添加如下内容,其中3个conf文件代表了3个虚拟主机lcl, dns, dyn [code:1:93ed16b4fc] # Use vHost NameVirtualHost *:80 NameVirtualHost *:443 <IfModule mod_vhost_alias.c> Include conf/sites/com.javaws.lcl.conf Include conf/sites/com.javaws.www.conf Include conf/sites/com.javaws.dyn.conf </IfModule> [/code:1:93ed16b4fc] d. 在conf目录下建立sites目录,创建 com.javaws.lcl.conf文件,并配置lcl主机的内容 [code:1:93ed16b4fc] # lcl.javaws.com # <VirtualHost *:80> ServerAdmin jhsea3do@lcl.javaws.com DocumentRoot "D:/www/com/javaws/lcl" ServerName lcl.javaws.com ServerAlias 127.0.0.1 localhost # 该虚拟主机别名 ErrorLog logs/sites/lcl.javaws.com-error_log # 注意建立在logs目录下建立相关的sites目录 CustomLog logs/sites/lcl.javaws.com-access_log common # <Directory "D:/www/com/javaws/lcl"> Options FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> # </VirtualHost> [/code:1:93ed16b4fc] e. 根据上面的文件配置其他的主机内容,保存httpd.conf,重启apache2,在3个虚拟主机上放置不同的文件,应该能在浏览器中使用对应的域名访问到 | |
jhsea3do 回复于:2005-07-09 15:51:58 | |
2. 配置JK
--------- a. 确保mod_jk的支持模块被apache加载 [code:1:e9e868dfa7] LoadModule jk_module modules/mod_jk.so [/code:1:e9e868dfa7] b. 配置httpd.conf使其加载workers的配置文件(该文件为全局配置文件,请勿放入虚拟机的配置文件中) [code:1:e9e868dfa7] # Use mod_jk <IfModule mod_jk.c> JkWorkersFile conf/jks/workers.properties </IfModule> [/code:1:e9e868dfa7] 以下为workers.properties文件的内容 [code:1:e9e868dfa7] # workers.properties.minimal # worker.list=localhost,jkstatus # 共有两个worker可供使用 # worker.localhost1.type=ajp13 # worker localhost1 对应的 jk socket (private worker) worker.localhost1.host=localhost worker.localhost1.port=8009 # worker.localhost.type=lb # worker localhost 使用负载均衡模式 (public worker) worker.localhost.balance_workers=localhost1 # 仅使用 localhost1 作为 localhost 的负载均衡, # # 如果你有多个private worker,可以放在balance中 # worker.jkstatus.type=status # worker jkstatus 使用 status 模式 [/code:1:e9e868dfa7] c. 编辑com.javaws.lcl.conf,配置lcl主机,使其支持 jk * 该配置代码应该和<Directory />配置平级 [code:1:e9e868dfa7] # <IfModule mod_jk.c> JkMountFile conf/jks/jk1.com.javaws.lcl.urimaps.properties # urimaps 配置文件 JkLogFile logs/sites/lcl.javaws.com-jk-info_log # jk的日志 JkLogLevel info # jk的日志纪录等级 </IfModule> [/code:1:e9e868dfa7] 以下为jk1.com.javaws.lcl.urimaps.properties文件的内容 [code:1:e9e868dfa7] # jk1.com.javaws.lcl.urimaps.properties # /*.jsp=localhost # 所有uri为*.jsp结尾的http请求均转交localhost worker处理 /*.jspa=localhost # 所有uri为*.jspa结尾的http请求均转交localhost worker处理 /*.do=localhost # 所有uri为*.do结尾的http请求均转交localhost worker处理 /servlets/*=localhost # 所有uri为/servlets/目录下的http请求均转交localhost worker处理 /admin/*=localhost # 所有uri为/admin/目录下的http请求均转交localhost worker处理 # !/admin/*.gif=localhost # /admin/ 目录下的 gif, jpg 无需由jk处理 !/admin/*.jpg=localhost # ... !/servlets/*.gif=localhost !/servlets/*.jpg=localhost # /jkmanager=jkstatus # 所有uri为/jkmanager/目录下的http请求均转交jkstatus worker处理 [/code:1:e9e868dfa7] d. 启动 tomcat , 确保 tomcat 加载了 ajp13 handle e. 保存以上配置,重启apache2, 这样可以访问对应的java uri | |
jhsea3do 回复于:2005-07-09 15:52:44 | |
3. 配置SSL(如果不需要配置,可以略过)
------------------------------------ a. 制作密钥和证书:ssl-javaws.com.crt、ssl-javaws.com.key, 确保mod_ssl的支持模块被apache加载,win32版本的bin building不提供ssl支持(出于安全考虑),请用msvc60自行编译 [code:1:0d98eee83a] LoadModule ssl_module modules/mod_ssl.so [/code:1:0d98eee83a] b. 为需要SSL支持的站点配置加密的主机,比如lcl主机,可以在该主机的配置文件下加入: * 该配置代码应该和<VirtualHost />配置平级 [code:1:0d98eee83a] <VirtualHost *:443> ServerAdmin jhsea3do@lcl.javaws.com DocumentRoot "D:/www/com/javaws/lcl" ServerName lcl.javaws.com ServerAlias 127.0.0.1 localhost # 该虚拟主机别名 ErrorLog logs/sites/lcl.javaws.com-error_log # 注意建立在logs目录下建立相关的sites目录 CustomLog logs/sites/lcl.javaws.com-access_log common # <IfModule mod_ssl.c> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNUL SSLCertificateFile "conf/certs/ssl-javaws.com.crt" SSLCertificateKeyFile "conf/certs/ssl-javaws.com.key" <Files ~ "\.(cgi|shtml|phtml|php3?)$"> # 对于CGI文件设置环境变量 SSLOptions +StdEnvVars </Files> 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" </IfModule> # <Directory "D:/www/com/javaws/lcl"> Options FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> # </VirtualHost> [/code:1:0d98eee83a] c. 配置原80端口的主机的所有请求均转发到443端口上,此处需要打开mod_rewrite [code:1:0d98eee83a] LoadModule rewrite_module modules/mod_rewrite.so [/code:1:0d98eee83a] * 以下配置内容位于80端口虚拟主机的配置文件中,配置代码应该和<Directory />配置平级 [code:1:0d98eee83a] <IfModule mod_ssl.c> RewriteCond %{REMOTE_HOST} lcl\.javaws\.com\.org$ RedirectMatch ^/(.*) https://lcl.javaws.com/$1 RewriteCond %{REMOTE_HOST} localhos\.org$ RedirectMatch ^/(.*) https://localhost/$1 RewriteCond %{REMOTE_HOST} 127\.0\.0\.1$ RedirectMatch ^/(.*) https://127.0.0.1/$1 </IfModule> [/code:1:0d98eee83a] d. 保存,使设置生效,开浏览器检查实际结果 ========================================================= Fin | |
fei 回复于:2005-07-21 13:19:26 | |
好文--现在还有人说用jk2呢。 | |
perryhg 回复于:2005-08-16 02:44:05 | |
<VirtualHost *:443>这个有什么意义吗?
https不支持virtualhost的,不是技术的原因,而是安全策略的原因。 | |
jhsea3do 回复于:2005-08-16 10:40:54 | |
按我的配置方法的确可以多个https站点并存
我的确是不知道这方面相关安全策略方面的知识,你能说一下或者介绍相关的文章么? |
文章来源于领测软件测试网 https://www.ltesting.net/
领测软件测试网最新更新
关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073