Apache+mod_jk+Tomcat(5)-----Apache 基于端口的virtual host

虚拟主机(Virtual Host)

 

概念:同一台机器上搭建属于不同域名或者基于不同IP的多个网站服务技术,可以为运行在同一台物理机器上的各个网站指配不同的IP和端口,也可以让多个网站拥有不同的域名。

根据需求创建虚拟主机

 

1.需求

同一台主机上运行两套应用程序,通过端口区分(基于端口的虚拟主机)(一套程序是通过50001端口,另外一套是通过50002端口),基于之前搭建的环境上。

 

2.实施内容

1)因为虚拟主机是基于端口的,所以修改配置文件/etc/httpd/conf/httpd.conf

Listen 80

Listen 50001

Listen 50002

 

2)定义虚拟主机的配置文件

 

第一个虚拟主机的配置文件

/etc/httpd/conf.d/virtual.d/virtual1.conf

<VirtualHost *:50001>
   ServerName 192.168.100.29
   DocumentRoot "/var/www/html_virtual1"
   <Directory /var/www/html_virtual1>
     Options  FollowSymLinks
     AllowOverride None
     Require all granted
   </Directory>
   CustomLog logs/access_virtual1_log combined env=!nolog
   ErrorLog logs/error_virtual1.log
   ErrorDocument 400 /error/40X.json
   ErrorDocument 401 /error/40X.json
   ErrorDocument 403 /error/40X.json
   ErrorDocument 404 /error/40X.json
   ErrorDocument 405 /error/40X.json
   ErrorDocument 408 /error/40X.json
   ErrorDocument 410 /error/40X.json
   ErrorDocument 411 /error/40X.json
   ErrorDocument 412 /error/40X.json
   ErrorDocument 413 /error/40X.json
   ErrorDocument 414 /error/40X.json
   ErrorDocument 415 /error/40X.json
   ErrorDocument 500 /error/50X.json
   ErrorDocument 501 /error/50X.json
   ErrorDocument 502 /error/50X.json
   ErrorDocument 503 /error/50X.json
   ErrorDocument 506 /error/50X.json
   Alias /error/ "/var/www/error_virtual1/"
   IncludeOptional conf.d/mod_jk_virual1.conf
 </VirtualHost>

第二个虚拟主机的配置文件

 

/etc/httpd/conf.d/virtual.d/virtual2.conf

<VirtualHost *:50002>
   ServerName 192.168.100.29
   DocumentRoot "/var/www/html_virtual2"
   <Directory /var/www/html_virtual2>
     Options  FollowSymLinks
     AllowOverride None
     Require all granted
   </Directory>
   CustomLog logs/access_virtual2_log combined env=!nolog
   ErrorLog logs/error_virtual2.log
   ErrorDocument 400 /error/40X.json
   ErrorDocument 401 /error/40X.json
   ErrorDocument 403 /error/40X.json
   ErrorDocument 404 /error/40X.json
   ErrorDocument 405 /error/40X.json
   ErrorDocument 408 /error/40X.json
   ErrorDocument 410 /error/40X.json
   ErrorDocument 411 /error/40X.json
   ErrorDocument 412 /error/40X.json
   ErrorDocument 413 /error/40X.json
   ErrorDocument 414 /error/40X.json
   ErrorDocument 415 /error/40X.json
   ErrorDocument 500 /error/50X.json
   ErrorDocument 501 /error/50X.json
   ErrorDocument 502 /error/50X.json
   ErrorDocument 503 /error/50X.json
   ErrorDocument 506 /error/50X.json
   Alias /error/ "/var/www/error_virtual2/"
   IncludeOptional conf.d/mod_jk_virual2.conf
 </VirtualHost>

 

3)为了让apache启动时,加载这两个配置文件,在/etc/httpd/conf/httpd.conf中追加下面的配置

IncludeOptional conf.d/virtual.d/*.conf

 

4)分别创建两条虚拟主机的文档目录,并在里面放上需要访问的html资源

mkdir /var/www/html_virtual1

virutal1test.html

mkdir /var/www/html_virtual2

 virutal2test.html

 

5)从上面各自虚拟主机的配置文件来看,都定义了各自的mod_jk文件,所以创建mod_jk文件,worker还是使用以前定义好的tomat1.

 

/etc/httpd/conf.d/mod_jk_virtual1.conf

<IfModule mod_jk.c>

JkMount /virtual1/* tomcat1

</IfModule>

 

/etc/httpd/conf.d/mod_jk_virtual2.conf

<IfModule mod_jk.c>

JkMount /virtual2/* tomcat1

</IfModule>

 

6)在tomcat里放上两个war包,一个名叫virutal1,virtual2

 

7)重启apache,重启tomcat

systemctl restart httpd

 

/opt/tomcat/bin/shutdown.sh

/opt/tomcat/bin/startup.sh

 

8)测试apache的静态资源是否能正常访问

http://192.168.100.29:50001/virtual1test.html

结果:正常显示

 

http://192.168.100.29:50002/virtual2test.html

结果:正常显示

 

9)确认log

/var/log/httpd/access_virtual1_log

10.0.210.135 - - [03/Aug/2017:15:34:59 +0900] "GET /virtual1test.html HTTP/1.1" 200 53 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)"

 

/var/log/httpd/access_virtual2_log

10.0.210.135 - - [03/Aug/2017:15:45:54 +0900] "GET /virtual2test.html HTTP/1.1" 200 53 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)"

 

10)通过apache&mod_jk&tomcat访问tomcat的资源

http://192.168.100.29:50001/virtual1/index.jsp

结果:正常显示

 

http://192.168.100.29.50002/virtual2/index.jsp

结果:正常显示

 

11)确认log

/var/log/httpd/access_virtual1_log

10.0.210.135 - - [03/Aug/2017:15:52:15 +0900] "GET /virtual1/index.jsp HTTP/1.1" 200 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)"

 

/var/log/httpd/access_virtual2_log

10.0.210.135 - - [03/Aug/2017:15:52:55 +0900] "GET /virtual2/index.jsp HTTP/1.1" 200 286 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)"

 

总结:总体来说,配的很顺利,但是对于一些概念,还需要学习,比如对于ServerName的概念,我就不是特别理解。看到httpd.conf里的解释是这样的解释的

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#

If your host doesn't have a registered DNS name, enter its IP address here.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Apache+Tomcat 实现负载均衡时,我们可以使用 mod_jk 模块实现。mod_jkApache 的一个模块,它与 Tomcat 之间通过 AJP 协议进行通信,可以将请求分发给多个 Tomcat 服务器,从而实现负载均衡。 以下是使用 mod_jk 实现负载均衡的步骤: 1. 安装 mod_jk 模块 在 Apache 的模块目录下,添加 mod_jk 模块。在 Linux 系统中,通常是在 /etc/httpd/modules 目录下。 2. 配置 mod_jk 模块 在 Apache 的配置文件 httpd.conf 中,添加以下内容: ``` LoadModule jk_module modules/mod_jk.so JkWorkersFile /path/to/workers.properties JkLogFile /path/to/mod_jk.log JkLogLevel info ``` 上述配置中,LoadModule 指令用于加载 mod_jk 模块,JkWorkersFile 指令用于指定 workers.properties 文件的路径,该文件定义了 Tomcat 服务器的列表和其它相关参数,JkLogFile 指令用于指定 mod_jk 的日志文件路径,JkLogLevel 指令用于指定日志级别。 3. 配置 workers.properties 文件 在 workers.properties 文件中,我们需要定义多个 Tomcat 服务器的信息,例如: ``` worker.list=worker1,worker2 worker.worker1.type=ajp13 worker.worker1.host=192.168.1.1 worker.worker1.port=8009 worker.worker2.type=ajp13 worker.worker2.host=192.168.1.2 worker.worker2.port=8009 ``` 上述配置中,worker.list 指定了所有的 Tomcat 服务器名称,worker1 和 worker2 是两个 Tomcat 服务器的名称,type 指定了通信协议,host 和 port 分别指定了 Tomcat 服务器的 IP 地址和端口号。 4. 配置虚拟主机 在 Apache 的虚拟主机配置中,添加以下内容: ``` JkMount /* worker1 JkMount /app1/* worker2 ``` 上述配置中,JkMount 指令用于指定 URL 与 Tomcat 服务器之间的映射关系,* 表示所有的 URL,/app1/* 表示以 /app1/ 开头的 URL。 5. 配置重试和超时 在 workers.properties 文件中,我们可以配置重试和超时的参数,例如: ``` worker.worker1.retries=3 worker.worker1.connect_timeout=10000 worker.worker1.prepost_timeout=10000 ``` 上述配置中,retries 表示在重试之前的最大尝试次数,connect_timeout 表示连接超时时间,prepost_timeout 表示请求和响应的超时时间。 6. 测试负载均衡 完成上述配置后,我们可以启动多个 Tomcat 服务器,并访问 Apache 的虚拟主机。Apache 会将请求分发给多个 Tomcat 服务器,从而实现负载均衡。 以上就是使用 mod_jk 实现负载均衡的步骤。需要注意的是,使用 mod_jk 进行负载均衡时,需要确保 Tomcat 服务器之间的 session 同步。可以使用 Tomcat 提供的 session 共享机制或使用其它第三方的 session 共享方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值