`
carrot
  • 浏览: 163301 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Apache VirtualHost的用法

阅读更多


这么一个需求:同一台服务器上有两个应用,如
http://hostA:8080/serviceshttp://hostA:8080/admin
外部访问时,需要从不同的域名访问,如
http://services.host.comhttp://admin.host.com
一开始给他们这么一个比较简单的解决方案:
分别把services和admin两个应用,部署到不同的两个端口上,如
services -> http://hostA:8081/
admin -> http://hostA:8082/
接着在防火墙配两个公网IP,然后dns上把services.host.com和admin.host.com配置到这两个IP上。
当请求到达防火墙时,防火墙根据所访问的ip转发到hostA的对应端口上。
前 方用的防火墙是我们公司的Audemon 100,和公司的Audemon系统组的交流后得知,目前的防火墙版本不支持同时配置两个ip,要到六月底才能出版本支持。!@…%#%…%¥,晕倒,好 像这是很基本的功能来的吧,居然还不支持。没办法,此路不通。由于防火墙是不管域名的(因为域名资料是通过应用层传输的),那更别指望防火墙根据域名转发 了。
因此,我们只好提供了软件级的解决方案,让前方在Tomcat前加一个Apache 2.2,通过Apache的Virtual Host + AJP实现转发。
Apache的部分配置如下:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName host1.com
ProxyPass / ajp://host1.com:8009/
ProxyPassReverse / ajp://host1.com:8009/
</VirtualHost>
<VirtualHost *:80>
ServerName host2.com
ProxyPass / ajp://host2.com:8019/
ProxyPassReverse / ajp://host2.com:8019/
</VirtualHost>
Tomcat也需要配置AJP Connector,如host1.com的配置
<Connector port=”8009″ enableLookups=”false” redirectPort=”8443″ protocol=”AJP/1.3″ />
这个方案相对于防火墙的硬件方案,性能上要差一些,但还是不错的。
另 外还有一种方案是通过iptables的domain module来实现,但这个domain module好像是国内的某个高手写的,只更新到v0.02版本,并没有提交到iptables的标准里。虽然可以用而且性能比Apache的方案要高一 些,但是风险较大,而且配置麻烦(既要编译内核,又要配置iptables的rules),所以没有用这种方式。
本文来源于 冰山上的播客 http://xinsync.xju.edu.cn , 原文地址:http://xinsync.xju.edu.cn/index.php/archives/115

 

 

 

<Directory "/var/www/www">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<Directory "/var/www/phorum">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# 针对三部主机的 DocumentRoot 进行定!
<VirtualHost *:80>
    ServerName    linux.vbird.tsai
    DocumentRoot  /var/www/html
</VirtualHost>
<VirtualHost *:80>
    ServerName    www.vbird.tsai
    DocumentRoot  /var/www/www
    CustomLog     /var/log/httpd/www.access_log combined
    # 不同的主页可以指定不同的登录档资讯,这样比较好 debug 与分析啦!
</VirtualHost>
<VirtualHost *:80>
    ServerName    phorum.vbird.tsai
    DocumentRoot  /var/www/phorum
</VirtualHost>

 

 

<VirtualHost *>
ServerAdmin xxx@xxx.org
ServerName xxxxx
ProxyRequests Off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
# reverse proxy setting
ProxyPass / http://192.168.100.8:8180/
ProxyPassReverse / http://192.168.100.8:8180/
# cache dir root
CacheRoot "/var/www/proxy"
# max cache storage
CacheSize 50000000
# hour: every 4 hour
CacheGcInterval 4
# max page expire time: hour
CacheMaxExpire 240
# Expire time = (now - last_modified) * CacheLastModifiedFactor
CacheLastModifiedFactor 0.1
# defalt expire tag: hour
CacheDefaultExpire 1
# force complete after precent of content retrived: 60-90%
CacheForceCompletion 80

ErrorLog /var/log/apache2/error-westdc.geodata.cn.log
CustomLog /var/log/apache2/access-westdc.geodata.cn.log combined
ServerSignature On

</VirtualHost>

 

分享到:
评论
3 楼 saintwe 2012-03-23  
我现在有个论坛是:www.xxx.com/bbs 是PHP的开源程序
然而我现在用JSP开发了一套程序,我想以www.xxx.com访问,但是JSP里面使用了过滤器,我如何让过滤器不过滤二级目录bbs下的URL
我使用的是apache+tomcat  apache接收数据www.xxx.com(JSP程序)反向代理给tomcat处理。二级目录bbs apache直接处理
请问知道如何处理的吗?

简单的说就是www.xxx.com/bbs apache不要反向代理给tomcat处理。
2 楼 wmlJava 2011-06-17  
java_2008_4_4 写道
这么一个需求:同一台服务器上有两个应用,如
http://hostA:8080/services和http://hostA:8080/admin
外部访问时,需要从不同的域名访问,如
http://services.host.com和http://admin.host.com

针对这个需求,为什么不直接对 Tomcat 配置,通过两个虚拟主机来实现?



我觉得也是
1 楼 java_2008_4_4 2010-04-23  
这么一个需求:同一台服务器上有两个应用,如
http://hostA:8080/services和http://hostA:8080/admin
外部访问时,需要从不同的域名访问,如
http://services.host.com和http://admin.host.com

针对这个需求,为什么不直接对 Tomcat 配置,通过两个虚拟主机来实现?

相关推荐

    Apache中Virtual Host虚拟主机配置及rewrite参数说明

    &lt;VirtualHost *:80&gt; ServerAdmin webmaster@localhost DirectoryIndex index.html index.php DocumentRoot /home/jb51/sites/demo.jb51.net ServerName demo.jb51.net ServerAlias demo.jb51.net Allow ...

    apache 设置主机头,同一端口绑定多个域名和网站

    例如,如果使用`*`通配符来监听所有IP地址上的请求,则所有`&lt;VirtualHost&gt;`都应使用相同的端口号。 2. **避免混淆IP和端口**: 当使用`NameVirtualHost`指令时,确保不要混用IP地址和端口号。例如,`&lt;VirtualHost ...

    CentOS配置虚拟主机virtualhost使服务器支持多网站多域名的方法

    这通常通过使用Apache的虚拟主机(VirtualHost)功能实现。虚拟主机允许在一个单一的服务器上运行多个独立的网站,每个网站对应一个不同的域名或子域名。以下是详细的配置步骤和注意事项: 1. **启用VirtualHost...

    CentOS下Apache配置多域名或者多端口映射

    每个虚拟主机都使用 `&lt;VirtualHost&gt;` 块来定义。例如,对于 `www.website1.com` 和 `website1.com` 的配置如下: ```apache NameVirtualHost *:80 &lt;VirtualHost *:80&gt; DocumentRoot /var/www/html/website1 ...

    apache配置虚拟主机

    要避免这种情况,需要保留一个默认的`VirtualHost`配置,不指定任何IP地址和端口,这样Apache会将所有未匹配的请求转发给这个默认的虚拟主机。例如: ```apacheconf &lt;VirtualHost *:80&gt; DocumentRoot /var/...

    Apache配置多端口及Apache端口修改方法

    这样,Apache将同时监听这三个端口,但为了使每个端口对应不同的网站,需要使用`&lt;VirtualHost&gt;`容器来指定每个端口对应的网站配置。 #### 三、创建虚拟主机 虚拟主机允许在同一台服务器上托管多个独立的网站,每个...

    apache三种虚拟主机的配置

    - `&lt;VirtualHost 192.168.16.250:8080&gt;`:定义另一个虚拟主机容器,其中`192.168.16.250:8080`表示该虚拟主机绑定到同一IP地址的不同端口。 - 其余配置项与基于名称的虚拟主机相同。 **3.3 特点与应用场景** - 同...

    Apache NameVirtualHost *:80 has no VirtualHosts问题解决办法

    这个错误是由于Apache无法找到任何与NameVirtualHost指令匹配的VirtualHost配置。 首先,让我们深入理解一下`NameVirtualHost`和`VirtualHost`这两个概念: 1. **NameVirtualHost**: 这个指令告诉Apache启用基于...

    apache 虚拟主机配置

    使用`&lt;VirtualHost&gt;`标签来定义一个虚拟主机。例如: ```apache &lt;VirtualHost *:80&gt; ServerAdmin webmaster@163.com DocumentRoot "D:\www\smt" ServerName www.smt.com ServerAlias www.smt.com Options ...

    配置Apache服务器并且设置DNS .doc

    配置时,只需在Apache配置文件中使用`VirtualHost`指令,指定`DocumentRoot`(网站根目录)和`ServerName`(主机名),如示例所示: ```apacheconf &lt;VirtualHost *:80&gt; DocumentRoot /www/ghq1 ServerName ...

    centosApache搭建多个站点方法.pdf

    3. **虚拟主机配置**:可以通过 `&lt;VirtualHost&gt;` 标签在 httpd.conf 文件中定义,包括 `DocumentRoot`(站点根目录)、`ServerName`(域名或 IP)等关键参数。 4. **监听指令**(`Listen`):用来指定 Apache 监听的...

    Apache 配置,让每个站点按需配置独立的 php.ini

    在Apache的配置中,`VirtualHost`指令用于定义一个虚拟主机,即一个独立的网站。我们可以在每个`VirtualHost`块中添加`SetEnv`指令来设置环境变量`PHPRC`,这个变量告诉PHP解释器去寻找对应的`php.ini`文件。 下面...

    php+apache配置详解(图)

    #### 八、常见问题及解决方法 1. **Apache无法启动**:检查端口是否被占用,或查看错误日志寻找原因。 2. **PHP无法识别**:确保Apache正确加载了PHP模块,并且`php.ini`配置正确。 3. **MySQL连接失败**:检查...

    linux的Apache用户认证、域名跳转、Apache访问日志介绍1

    在Apache中实现域名跳转通常通过`VirtualHost`配置来完成,每个`VirtualHost`段可以定义一个或多个域名,并指定其对应的文档根目录。例如: ```apache &lt;VirtualHost *:80&gt; DocumentRoot "/data/wwwroot/111.com" ...

    linux下apache虚拟主机的配置方法

    &lt;VirtualHost *:8080&gt; # 这里填写新虚拟主机的配置信息 &lt;/VirtualHost&gt; ``` 此步骤确保新的虚拟主机能够在指定的端口上运行。 ### 3. 创建新的虚拟主机配置文件 为新虚拟主机创建一个专门的配置文件,如`/etc/...

    配置apache开启虚拟路径(伪静态)的方法.zip

    总结,配置Apache的虚拟路径和伪静态涉及到对Apache配置文件的理解和使用,包括设置VirtualHost、启用`mod_rewrite`模块以及编写`.htaccess`文件中的重写规则。这些步骤对于网站的多域名管理以及优化URL结构至关重要...

    Apache Web服务器配置与使用工作笔记

    ### Apache Web服务器配置与使用工作笔记 #### 一、Apache Web服务器简介 ...通过上述内容的学习,我们可以更加深入地了解Apache Web服务器的配置与使用方法,为实际工作中搭建和维护网站提供坚实的基础。

    Apache Ftp Server使用说明

    本文将深入探讨Apache Ftp Server的使用方法,包括安装、配置、管理以及常见问题解决。 **一、安装Apache Ftp Server** 1. 下载:首先,你需要从Apache官方网站(http://mina.apache.org/ftpserver/download.html...

Global site tag (gtag.js) - Google Analytics