apache2.2 虚拟主机配置

apache2.2 虚拟主机配置

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

一、改动httpd.conf

打开appserv的安装文件夹,找到httpd.conf文件,分别去掉以下两行文字前面的#号。 

#LoadModule vhost_alias_module modules/mod_vhost_alias.so

去掉#意思是启用apache的虚拟主机功能。 

#Include conf/extra/httpd-vhosts.conf

去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置

二、改动httpd-vhosts.conf

打开该文件,看到下面类似内容。虚拟主机的配置也是參照下面内容配置。下面对该内容进行解说

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.www.phpStudy.net
    DocumentRoot "C:/Program Files/Apache2/docs/dummy-host.www.phpStudy.net"
    ServerName dummy-host.www.phpStudy.net
    ServerAlias www.dummy-host.www.phpStudy.net
    ErrorLog "logs/dummy-host.www.phpStudy.net-error.log"
    CustomLog "logs/dummy-host.www.phpStudy.net-access.log" common
</VirtualHost>

NameVirtualHost *:80

注意1:NameVirtualHost 指定虚拟主机所使用的IP地址或域名,可是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost能够定义多个。 
注意2:全部符合NameVirtualHost或<VirtualHost>标签定义的请求,都会被作为虚拟主机处理,而主server将不理会。NameVirtualHost定义了而<VirtualHost>标签未定义的的请求,server会找不到对应的虚拟主机而将无法处理。所以每一个NameVirtualHost定义的參数至少要有一个<VirtualHost>相匹配。
注意3:假设设置NameVirtualHost 或<VirtualHost>为*:80的话,全部针对80port的请求,都会被虚拟主机处理,请求会依据域名指向某个虚拟主机。假设有来自80port的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主server将无法收到来自80port的不论什么请求。为此也要为主server配置一个虚拟主机。

ServerAdmin 管理员邮箱

DocumentRoot 站点文件夹 (注意:假设站点文件夹中的路径有空格,请在路径两端加上双引號)

ServerName 要绑定的域名(必填)

ServerAlias 要绑定的虚拟主机的别名。(可选,假设多个域名,中间以空格分隔,假设没有,则去掉该行)

支持*,?两种通配符,比方 *.abc.com,表示随意一个abc.com的二级域名都可訪问。

CustomLog 用户日志文件(可选,假设不须要,则去掉该行)

ErrorLog 错误日志(可选,假设不须要,则去掉该行)

基于IP地址的虚拟主机

<VirtualHost 172.20.30.40>
  DocumentRoot /www/example1
  ServerName www.example.com
</VirtualHost>
<VirtualHost 172.20.30.50 192.168.0.10:80>
  DocumentRoot /www/example2
  ServerName www.example.org
</VirtualHost>

每一个虚拟主机可定义多个IP,之间用空格隔开

各种虚拟主机的混用

Listen 80
Listen 81

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
    DocumentRoot /www/example1
    ServerName www.example.com
</VirtualHost>

<VirtualHost 172.20.30.40>
    DocumentRoot /www/example2
    ServerName www.example.org
</VirtualHost>

NameVirtualHost 172.20.30.40:81

<VirtualHost 172.20.30.40:81>
    DocumentRoot /www/example3
    ServerName www.example3.net
</VirtualHost>

# IP-based
<VirtualHost 172.20.30.50>
    DocumentRoot /www/example4
    ServerName www.example4.edu
</VirtualHost>

<VirtualHost 172.20.30.60:81 172.20.30.40:81>
    DocumentRoot /www/example5
    ServerName www.example5.gov
</VirtualHost>

虚拟主机混用时的问题

一、虚拟主机混用能够这样理解:一行NameVirtualHost指令定义的全部虚拟主机为一组;该组与一个基于IP的虚拟主机平级。即把一行NameVirtualHost定义的整个组看作是一个基于IP的虚拟主机。
二、虚拟主机指定的port必须是Listen定义的。假设虚拟主机没有指定port,则觉得是80port。假设NameVirtualHost * 这样定义,是指全部地址的全部已定义port。
三、更详细的地址定义优先。比方NameVirtualHost指令定义了*:80,而某个基于IP的虚拟主机定义为192.168.0.1:80,那么此时如有对192.168.0.1:80的请求,那请求会被优先指向192.168.0.1:80定义的虚拟主机。所以为了避免混乱,不要定义相互有交叉或包括的地址区间。
四、一个虚拟主机,能够同一时候为基于域名和基于IP的。如上一例中最后一个虚拟主机。这样符合两种定义的请求都会被指同一个虚拟主机。有时要差别内外网对虚拟主机的訪问时能够这样,由于来自内网的请求可能和来自外网的请求可能不一样,可是它们须要指向同一个虚拟主机。

使用”_default_”虚拟主机

这个虚拟主机能够理解成基于IP的虚拟主机

<VirtualHost _default_:*>
    DocumentRoot /www/default
</VirtualHost>

这个虚拟主机将接管与其他虚拟主机IP和port不匹配的请求。只是如此一来,主server将不会处理不论什么请求。因此把主server配置成一个虚拟主机是必要的。

本地机器代理在其他机器上执行的虚拟主机

<VirtualHost 158.29.33.248>
    ProxyPreserveHost On
    ProxyPass /foo/no !
    ProxyPass /foo http://192.168.111.2
    ProxyPassReverse /foo http://192.168.111.2
    ServerName hostname.example.com
</VirtualHost>

一、首先这是一个基于IP的虚拟主机,它接收并处理对IP地址158.29.33.248的请求。

二、ProxyPass /foo http://192.168.111.2 将把对http://158.29.33.248/foo的请求转换为一个代理请求,该请求指向http://192.168.111.2。

三、ProxyPass /foo/no ! 不代理针对/foo/no的请求。这个必须放在正常代理指令之前。

四、ProxyPreserveHost On 意思是传送原始请求的Host信息给被代理的机器。

五、ProxyPassReverse /foo http://192.168.111.2 能够保证请求URL在其他机器上被重定向后,本机处理时也能够保持一致。详细看手冊关于反向代理的部分。

六、基于域名的虚拟主机也是相同的道理。无论是什么类型的虚拟主机,它仅仅是处理归它处理的请求而已。

配置实例

需求1:

这是一个基于IP的虚拟主机使用实例

一个项目数据应用,为了防止因为域名解析问题导致不能正常訪问,因此採用IP的方式訪问接口。比方:http://61.122.3.6:8080/ 这种方式。虚拟主机的配置例如以下:

1、在httpd.conf中Listen 80以下添加一行,内容为:Listen 8080,即监听8080port

2、配置虚拟主机配置

#NameVirtualHost 61.122.3.6:8080 这一行能够不须要。经測试,基于IP地址的虚拟主机可不用设置NameVirtualHost项。
<VirtualHost 61.122.3.6:8080>
    ServerAdmin webmaster@dummy-host.www.phpStudy.net
    DocumentRoot "d:/web/openj"
</VirtualHost>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118139.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 恋空 By whaosoft「建议收藏」

    恋空 By whaosoft「建议收藏」/序曲 如果那天,我没有遇见你。我想,我就不会感到如此痛苦、如此悲伤、如此难过、如此令人悲从中来了。但是,如果我没有遇见你。我也不会知道那么欢愉、那么温柔、那么相爱、那么温暖、那么幸福的心情了……噙着泪水的我,今天,依旧仰望着天空。 仰望着天空。I.虚幻的开始1 『哇~!!肚子超饿的啦~』期待已久的午休时间终于到了。美嘉一如往常地打开桌上的便当。来上学真的是麻烦事一大堆

    2022年7月11日
    14
  • SpringCloud整合Hmily实现TCC分布式事务案例详解

    SpringCloud整合Hmily实现TCC分布式事务案例详解目录一、概述二、案例说明和数据库、表准备三、服务注册中心搭建四、搭建中国建设银行BBC微服务五、搭建中国工商银行ICBC微服务六、测试七、总结一、概述前面一篇文章,我们已经详细介绍了TCC是如何处理分布式事务,主要分别三个阶段:try:负责业务检查及资源预留; confirm:用来执行业务逻辑; cancel:实现一个与Try相反的操作既回滚操作;前面一篇文章,大部分都是理论相关知识,我们都知道理论必须结合实践才能加深对其理解,所以本篇文章我们将会以一个银行转账

    2022年5月21日
    42
  • 0xc0000225无法进系统_Win10无法开机0xc0000225错误代码解决方法

    0xc0000225无法进系统_Win10无法开机0xc0000225错误代码解决方法早在使用Win7系统的时候我们就会遇到0xc0000225错误无法开机的问题,而在Win10系统的使用中,同样很多小伙伴也遇到了该错误,那么这时我们要怎么解决呢?下面小编就和大家分享下Win10无法开机0xc0000225错误代码的原因和解决方法。出现0xc0000225错误的原因:出现错误代码0xc0000225,表示Windows无法找到用于引导的BCD(引导配置数据)文件。如果您的系统文…

    2022年6月26日
    39
  • Redis 6_redis scan keys

    Redis 6_redis scan keysJedis是java开发的操作redis的工具包。

    2025年10月17日
    7
  • 波束形成

    波束形成1.问题描述:数字波束形成器是全数字化超声成像的基础,也是高性能彩超的保证。数字波束形成包括发射和接收两个部分。数字是接收波束形成的关键技术,它通过使用顺序储存器FIFO或随机存取存储器双端口RAM替代模拟式波束形成器中的LC延时线来实现波束聚焦,即以数字延时补偿替代模拟延时的补偿。数字延时不仅能实现精确延时补偿,实现所谓的逐点跟踪式动态聚焦,还能方便实现动态孔径、动态变迹控制,克服模拟式延时补偿存在的诸多固有缺点,通道数增加不受限制,是图像品质得以全面提高。2.部分程序:close..

    2022年6月15日
    40
  • 用flash做古诗动画_《古诗三首》Flash动画课件[通俗易懂]

    用flash做古诗动画_《古诗三首》Flash动画课件[通俗易懂]《古诗三首》Flash动画课件古诗词三首牧童[唐]吕岩草铺横野六七里,笛弄①晚风三四声。归来饱饭黄昏后,不脱蓑衣②卧月明。注释①弄:逗弄。②蓑衣:棕或草编的外衣,用来遮风挡雨。………舟过安仁①[宋]杨万里一叶渔船两小童,收篙②停棹③坐船中。怪生④无雨都张伞,不是遮头是使风。注释①安仁:县名。在湖南省东南部,宋时设县。②篙:撑船用的竹竿或木杆。③棹:船桨。④怪生:怪不得。……

    2022年5月5日
    84

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号