httpd +jk

在上一篇文章( Tomcat中的虚拟主机 )中,我们讨论了如何在Tomcat中设置虚拟主机。 它具有成本效益,因为仅一个公共IP即可托管多个域。 如果我们有大型组织,并且每个部门都希望在不同的计算机上本地托管其网站。 那么如何实现虚拟主机的概念呢? 在这篇文章中,我们将看到我们如何做到这一点。

问题场景:在大型组织中,他们有多个部门,每个部门都希望将其网站托管在不同的计算机上。 因此,可以使用不同的本地IP地址在本地访问这些网站。

当我们映射到公共地址时,我们将面临问题。 我们有两种选择,要么购买尽可能多的公共地址,要么将一台服务器置于前端并委派这些请求。

我们将使用第二个选项。 我们将Apache httpd Web服务器放在所有部门服务器的前面。 因此,仅一个公共IP就足够了。 所有域DNS条目均指向Apache httpd服务器。 然后Apache服务器将这些请求委托给相应的tomcat服务器。 从用户(浏览器)角度来看,此过程是完全透明的。

虚拟主机实现的大纲结构

Apache httpd Web服务器如何与Tomcat服务器通信

在我们详细介绍httpd服务器和tomcat之间的通信如何发生之前

当我们启动单个tomcat时,绑定了多少个端口?

  • 关机端口
  • http连接器端口
  • https连接器端口(可选)
  • ajp端口

端口配置存储在$ CATALINA_HOME / conf / server.xml文件中。 我们可以在必要时更改端口。

在这里,AJP (Apache JServ协议)是一种二进制协议,可以将来自Web服务器的入站请求代理到位于Web服务器后面的应用程序服务器。

Apache httpd Web服务器通过AJP协议与Tomcat服务器通信。

当我们安装Apache httpd服务器时,它没有支持ajp协议的内置功能。 所以我们需要mod_jk模块。 它向Apache httpd服务器添加了ajp支持。

在此方案中实施虚拟主机概念的步骤:

  1. 安装Apache httpd Web服务器
  2. 安装mod_jk连接器
  3. 配置JK连接器
  4. 配置Apache httpd服务器,应用虚拟主机概念

先决条件:我们已经在不同部门中安装了Tomcat并部署了该应用程序,并且运行正常。

安装Apache httpd Web服务器

我们可以通过两种方式安装Apache Web服务器:

  1. 二进制模块
  2. 从来源

我们可以从分发包管理器(apt-get或yum)安装Apache httpd服务器。 或者我们可以下载源代码,然后进行编译和安装。

我们使用第二个选项。 首先从此处下载httpd服务器源代码。 然后解压缩并安装

./configure --prefix=/usr/local/apache    --enable-rewrite=shared  --enable-proxy=shared
make
sudo make install

这里的–prefix选项提到我们将要安装Apache httpd服务器的位置。 –enable-rewrite–enable-proxy选项可在共享模式下启用这些模块。 现在不需要这些模块。 但是我们以后会使用它在移交给下一个服务器链和负载平衡支持之前重写URL。

安装mod_jk连接器

现在,Apache httpd服务器已准备就绪。 我们需要向服务器添加ajp支持。 从此处下载mod_jk连接器模块,解压缩并安装

cd native
./configure    --with-apxs=/usr/local/apache/bin/apxsmake
sudo make install

这里的–with-apxs选项指定apxs模块的位置。 所以我们需要给Apache httpd服务器位置。 现在,在apache安装位置(/ usr / local / apache / modules)的modules目录上创建mod_jk.so文件

配置mod_jk连接器

此步骤有2个子步骤:

  1. 创建worker.properties文件
  2. 在apache httpd.conf文件中加载并配置JK连接器模块

创建worker.properties文件

mod_jk连接器已准备就绪。 但是此连接器是基于配置文件工作的。 所以我们需要创建一个名为worker.properties文件的配置文件

该文件的语法为“键=值”对,此处我们定义了工作程序。 即所有部门tomcat托管对应的tomcat的IP地址和ajp端口。

此处的输入格式如下:

worker.<name>.property=<value>

例如:

worker.<name>.type=ajp13
worker.<name>.port=<ajp port>
worker.<name>.host=<tomcat ip addr>
worker.list=<name>

这里:

  • worker.list键的所有工作人员姓名用逗号分隔
  • 类型=这里的工人类型。 我们使用ajp13版本
  • port =我们指定该服务器的ajp端口(不是http port)
  • host = Tomcat服务器的IP地址或主机名

worker.properties

worker.list=department1,department2,department3worker.department1.type=ajp13
worker.department1.port=5000
worker.department1.host=192.168.5.10worker.department2.type=ajp13
worker.department2.port=5000
worker.department2.host=192.168.6.10worker.department3.type=ajp13
worker.department3.port=5000
worker.department3.host=192.168.7.10

在httpd.conf中添加条目

已安装Apache httpd服务器。 安装了mod_jk模块并创建了worker.properties文件。 但是这三个是孤立的。 我们放在一起,我们需要配置httpd服务器。

在Apache安装位置找到conf / httpd.conf文件,并将以下条目添加到其中

LoadModule    jk_module  modules/mod_jk.soJkWorkersFile conf/workers.propertiesJkLogFile     logs/mod_jk.log
JkLogLevel    emerg
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat     "%w %V %T"

这里:

  • LoadModule –将mod_jk共享模块加载到Apache httpd服务器(启用mod_jk模块)
  • JkWorkersFile –指定worker.properties文件的位置
  • 其他所有的都是mod_jk的日志系统。 它的样板代码只需复制和粘贴。

将httpd委托给Tomcat

现在,我们通知Apache httpd服务器如何将请求委派给相应的服务器。

JkMount  /department1* department1
JkMount  /department2* department2
JkMount  /department3* department3

这里:

  • JkMount –指定URL是否具有/ department1 *模式,然后将该请求委托给department1
  • 工人。 在worker.properties文件中指定了该工作IP地址和端口。

我们更改了/ etc / hosts文件,就像上次发布的指向apache httpd Web服务器的所有网站域一样。

如果我们访问http://www.ramki.com/department1/index.html Apache httpd服务器如何处理请求

它完美地称为正确的tomcat服务器,我们得到了正确的响应。

但是我们有两个问题
1.我不要我的网址像这样http://www.ramki.com/department1/index.html
我想要我的网址,例如http://www.ramki.com/index.html

从我的URL中删除department1。 但是Department1字符串在URL中非常重要,因为JkMount仅基于此匹配的字符串工作。

2. http://www.ramki.com/department1/index.html用于第一个tomcat,第二个部门拥有域http://www.krishnan.com,然后访问第二个tomcat,我们使用URL:http://www.krishnan .com / department2 / index.html,但同时使用URL http://www.krishnan.com/department1/index.html时,我们同时访问第一个tomcat数据
(即)
http://www.ramki.com/department1/index.html == http://www.krishnan.com/department1/index.html,因为这两个URL都有Department1关键字。因此,JkMount是基于这些关键字的作品。 作为结果的错误解释。 如何解决这个问题?

Apache httpd服务器中的虚拟主机

我们需要添加条件JkMount。 例如ramki.com域询问仅需要在该tomcat中搜索的Department1,department2之类的路径。 没有其他地方。 要添加此条件,我们添加虚拟主机条目。

httpd.conf文件中添加虚拟主机条目

Listen 80
NameVirtualHost *:80<VirtualHost *:80>ServerName www.ramki.comJkMount  /department1* department1
</VirtualHost><VirtualHost *:80>ServerName www.krishnan.comJkMount  /department2* department1
</VirtualHost>

这里
ServerName –服务器的域名

如果http://www.krishnan.com/department1/index.html URL现在是这样。 服务器与服务器名称匹配。 在这里,它匹配第二个虚拟主机条目。 在第二虚拟主机中只有一个JkMount条目。 并且没有匹配的department1字符串。

JkMount  /department2* department1

结果是404错误页面被响应。 它的作品很好。

现在,所有人都可以正常工作。 现在我的URL是http://www.ramki.com/department1/index.html,这里我不需要URL中的department1路径。 我只想http://www.ramki.com/index.html然后我们使用mod_rewrite引擎

Listen 80
NameVirtualHost *:80<VirtualHost *:80>ServerName www.ramki.comRewriteEngine on RewriteLog logs/apache-mod_rewriteRewriteRule ^/(.*)$ /department1/$1 [L,PT]JkMount  /* <dept_name>
</VirtualHost>

这里:

  • RewriteEngine on –打开Rewrite模块
  • RewriteRule ^ /(。*)$ / department1 / $ 1 [L,PT] –此处^ /(。*)$匹配任何它将值捕获为$ 1的字符串并将URL更改为/ department1 / $ 1

http://www.ramki.com/index.html此处^ /(。*)$匹配index.html,它捕获到$ 1并替换为/ department1 / $ 1 ==> /department1/index.html

重写发生在将请求委托给Tomcat之前。 因此我们将URL透明地更改为浏览器。 现在客户端(浏览器)仅发送http://www.ramki.com就足以访问Tomcat 1部门。

斯雷恩·卡斯特

参考:来自Ramki Java Blog博客的JCG合作伙伴 Rama Krishnan的虚拟主机+ Apache httpd服务器+ Tomcat + mod_jk连接器 。

翻译自: https://www.javacodegeeks.com/2012/04/virtual-host-apache-httpd-server-tomcat.html

httpd +jk

httpd +jk_虚拟主机+ Apache httpd服务器+ Tomcat + mod_jk连接器相关推荐

  1. apache虚拟服务器搭建,httpd搭建虚拟主机与Apache网站基础服务

    前言 Apache简介 Apache的主要特点 httpd 服务器的基本配置 搭建httpd虚拟主机 Apache简介: Apache HTTP Server 是开源软件项目的代表,也是世界使用排名第 ...

  2. Linux之httpd及虚拟主机的配置及使用

    目录 1.安装httpd,并将访问apache服务器的首页修改为hello.html 且内容为: "My Home Page is hello" 1.安装httpd 2.查看服务器 ...

  3. 虚拟主机要安装apache服务器,虚拟主机apache是什么?如何配置?

    相信很多人都对虚拟主机apache是什么而感到困扰,也对如何配置虚拟主机感到疑惑.今天我们就了解一下虚拟主机apache以及在apache服务器上配置虚拟主机的方法吧. 那么虚拟主机apache是什么 ...

  4. 独立服务器和虚拟服务器的区别,BlueHost虚拟主机与独立服务器的主要区别

    进行网站搭建必不可少的就是网站空间,其中使用最多的应该是虚拟主机和独立服务器了,那么,站长如何在虚拟主机和独立服务器之间选择合适的空间进行网站搭建?下面小编通过BlueHost虚拟主机与独立服务器的主 ...

  5. 网站服务器可以用虚拟主机吗,做网站虚拟主机可以用服务器吗

    做网站虚拟主机可以用服务器吗 内容精选 换一换 可以.弹性云服务器或者专属主机上创建的弹性云服务器都可以用来搭建网站. 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最 ...

  6. 虚拟主机升级服务器,云虚拟主机升级云服务器

    云虚拟主机升级云服务器 内容精选 换一换 弹性云服务器(Elastic Cloud Server,ECS)是由CPU.内存.操作系统.云硬盘组成的基础的计算组件.弹性云服务器创建成功后,您就可以像使用 ...

  7. 虚拟主机和托盘服务器,虚拟主机和托盘服务器

    虚拟主机和托盘服务器 内容精选 换一换 源端服务器数据收集声明.源端服务器上安装和配置完迁移Agent后,迁移Agent会把源端服务器信息发送给主机迁移服务校验,收集的源端服务器的详细信息请参见主机迁 ...

  8. 共享虚拟服务器,共享虚拟主机和云服务器

    共享虚拟主机和云服务器 内容精选 换一换 云服务器创建后区域固定,不能将云服务器转移到另一个区域,也不能将云服务器转移到另一个帐号.您可以通过镜像迁移方式实现云服务器的跨帐号跨区域迁移.服务器迁移的常 ...

  9. 怎样看虚拟主机的服务器,虚拟主机怎么查看服务器类型

    虚拟主机怎么查看服务器类型 内容精选 换一换 使用华为云提供的公共镜像制作私有镜像时,您需先购买云主机等云资源时镜像选择公共镜像.云服务器类型建议统一选择"s3 (通用计算型)", ...

最新文章

  1. 温度传感器有源电子标签设计浅析
  2. linux关闭dns迭代查询,DNS查询和响应过程递归和迭代的使用
  3. Linux 从头学 01:CPU 是如何执行一条指令的?
  4. windows7下iis网站的.net框架版本设置
  5. Oracle rman备份和还原恢复数据库
  6. Python 模块 requests 模拟登录豆瓣 并 发表动态
  7. diamond升级IP,覆盖的时候报错
  8. 第一:如何解决robot framework log.html中的中文乱码问题
  9. 排毒食物 红糖可补血美体排毒
  10. win7 nodejs找不到express命令
  11. App 抓包-Fiddler简单使用教程
  12. canon mp 258清零方法
  13. USB打印服务器作用,沁恒股份USB打印机服务器方案概述
  14. 信息科采购服务器可行性,与HP合作 南方医院PACS系统创新效益
  15. Centos7安装libreoffice
  16. 2021年最新微博移动版网页链接自动跳转pc版网页链接软件【私信版】
  17. R语言28-Prosper 贷款数据分析4
  18. android 语音识别
  19. 【java学习】系统错误处理机制:异常(Exception)、断言(assert)和日志(log)
  20. 基于Springboot外卖系统16:菜品修改模块+菜品信息回显+ID查询口味列表+组装数据并返回

热门文章

  1. iTerm2终端集成git缩写意思
  2. DNS云学堂 | 三分钟了解,最近大火的DOH与HTTPDNS、DOT的异同
  3. 花了三个月终于把所有的Python库全部整理了!祝你早日拿到高薪!
  4. python与分形0004 - 带刺的圆
  5. ARCGIS格式转CAD时保留其图层、高程及颜色的方法
  6. ime with the \acknowledge=true\ parameter:,watcher:[Watcher will be disabled
  7. C语言简单直观打印二叉树
  8. Oracle/PLSQL存储过程详解
  9. 乐优商城遇到的坑一步一步总结
  10. 学校计算机的使用英语作文180字,英文作文学生开车去学校,180字