| 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站点并存
我的确是不知道这方面相关安全策略方面的知识,你能说一下或者介绍相关的文章么?
|