设为首页 收藏本站
查看: 944|回复: 0

[经验分享] apache2.2 虚拟主机配置方法教程

[复制链接]

尚未签到

发表于 2018-11-22 11:46:07 | 显示全部楼层 |阅读模式
一、修改httpd.conf
  打开appserv的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号。
  [plain] view plaincopyprint?

  •   #LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so  去掉#意思是启用apache的虚拟主机功能。
  [plain] view plaincopyprint?

  •   #Include conf/extra/httpd-vhosts.conf
#Include conf/extra/httpd-vhosts.conf  去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置
二、修改httpd-vhosts.conf
  打开该文件,看到以下类似内容。虚拟主机的配置也是参照以下内容配置。下面对该内容进行讲解
  [plain] view plaincopyprint?

  •   NameVirtualHost *: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
  •   
NameVirtualHost *: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
  

  NameVirtualHost *:80
  注意1:NameVirtualHost
指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。
  注意2:所有符合NameVirtualHost或标签定义的请求,都会被作为虚拟主机处理,而主服务器将不理会。NameVirtualHost定义了而标签没有定义的的请求,服务器会找不到相应的虚拟主机而将无法处理。所以每个NameVirtualHost定义的参数至少要有一个相匹配。
  注意3:如果设置NameVirtualHost
或为*:80的话,所有针对80端口的请求,都会被虚拟主机处理,请求会根据域名指向某个虚拟主机。如果有来自80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。为此也要为主服务器配置一个虚拟主机。
  ServerAdmin 管理员邮箱
  DocumentRoot 网站目录 (注意:如果网站目录中的路径有空格,请在路径两端加上双引号)
  ServerName 要绑定的域名(必填)
  ServerAlias 要绑定的虚拟主机的别名。(可选,如果多个域名,中间以空格分隔,如果没有,则去掉该行)
  支持*,?两种通配符,比如 *.abc.com,表示任意一个abc.com的二级域名都可访问。
  CustomLog 用户日志文件(可选,如果不需要,则去掉该行)
  ErrorLog 错误日志(可选,如果不需要,则去掉该行)
基于IP地址的虚拟主机
  [plain] view plaincopyprint?

  •   
  •   DocumentRoot /www/example1
  •   ServerName www.example.com
  •   
  
  DocumentRoot /www/example1
  
  ServerName www.example.com
  

  [plain] view plaincopyprint?

  •   
  •   DocumentRoot /www/example2
  •   ServerName www.example.org
  •   
  
  DocumentRoot /www/example2
  
  ServerName www.example.org
  

  每个虚拟主机可定义多个IP,之间用空格隔开
各种虚拟主机的混用
  [plain] view plaincopyprint?

  •   Listen 80
  •   Listen 81

  •   NameVirtualHost 172.20.30.40

  •   
  •   DocumentRoot /www/example1
  •   ServerName www.example.com
  •   

  •   
  •   DocumentRoot /www/example2
  •   ServerName www.example.org
  •   

  •   NameVirtualHost 172.20.30.40:81

  •   
  •   DocumentRoot /www/example3
  •   ServerName www.example3.net
  •   

  •   # IP-based
  •   
  •   DocumentRoot /www/example4
  •   ServerName www.example4.edu
  •   

  •   
  •   DocumentRoot /www/example5
  •   ServerName www.example5.gov
  •   
Listen 80  
Listen 81
  

  
NameVirtualHost 172.20.30.40
  

  

  
    DocumentRoot /www/example1
  
    ServerName www.example.com
  

  

  

  
    DocumentRoot /www/example2
  
    ServerName www.example.org
  

  

  
NameVirtualHost 172.20.30.40:81
  

  

  
    DocumentRoot /www/example3
  
    ServerName www.example3.net
  

  

  
# IP-based
  

  
    DocumentRoot /www/example4
  
    ServerName www.example4.edu
  

  

  

  
    DocumentRoot /www/example5
  
    ServerName www.example5.gov
  

虚拟主机混用时的问题
  一、虚拟主机混用可以这样理解:一行NameVirtualHost指令定义的所有虚拟主机为一组;该组与一个基于IP的虚拟主机平级。即把一行NameVirtualHost定义的整个组看作是一个基于IP的虚拟主机。
  二、虚拟主机指定的端口必须是Listen定义的。如果虚拟主机没有指定端口,则认为是80端口。如果NameVirtualHost
*
这样定义,是指所有地址的所有已定义端口。
  三、更具体的地址定义优先。比如NameVirtualHost指令定义了*:80,而某个基于IP的虚拟主机定义为192.168.0.1:80,那么此时如有对192.168.0.1:80的请求,那请求会被优先指向192.168.0.1:80定义的虚拟主机。所以为了避免混乱,不要定义相互有交叉或包含的地址区间。
  四、一个虚拟主机,可以同时为基于域名和基于IP的。如上一例中最后一个虚拟主机。这样符合两种定义的请求都会被指同一个虚拟主机。有时要区别内外网对虚拟主机的访问时可以这样,因为来自内网的请求可能和来自外网的请求可能不一样,但是它们需要指向同一个虚拟主机。
使用"_default_"虚拟主机
  这个虚拟主机可以理解成基于IP的虚拟主机
  [plain] view plaincopyprint?

  •   
  •   DocumentRoot /www/default
  •   
  
    DocumentRoot /www/default
  

  这个虚拟主机将接管与其它虚拟主机IP和端口不匹配的请求。不过如此一来,主服务器将不会处理任何请求。因此把主服务器配置成一个虚拟主机是必要的。
  本地机器代理在其它机器上运行的虚拟主机
  [plain] view plaincopyprint?

  •   
  •   ProxyPreserveHost On
  •   ProxyPass /foo/no !
  •   ProxyPass /foo http://192.168.111.2
  •   ProxyPa***everse /foo http://192.168.111.2
  •   ServerName hostname.example.com
  •   
  
    ProxyPreserveHost On
  
    ProxyPass /foo/no !
  
    ProxyPass /foo http://192.168.111.2
  
    ProxyPa***everse /foo http://192.168.111.2
  
    ServerName hostname.example.com
  

  一、首先这是一个基于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信息给被代理的机器。
  五、ProxyPa***everse /foo http://192.168.111.2
可以保证请求URL在其它机器上被重定向后,本机处理时也可以保持一致。具体看手册关于反向代理的部分。
  六、基于域名的虚拟主机也是同样的道理。不管是什么类型的虚拟主机,它只是处理归它处理的请求而已。
  配置实例
  需求1:
  这是一个基于IP的虚拟主机使用实例
  一个项目数据应用,为了防止由于域名解析问题导致不能正常访问,因此采用IP的方式访问接口。比如:http://61.122.3.6:8080/
这样的方式。虚拟主机的配置如下:
  1、在httpd.conf中Listen 80下面增加一行,内容为:Listen 8080,即监听8080端口
  2、配置虚拟主机配置
  [plain] view plaincopyprint?

  •   #NameVirtualHost 61.122.3.6:8080 这一行可以不需要。经测试,基于IP地址的虚拟主机可不用设置NameVirtualHost项。
  •   
  •   ServerAdmin webmaster@dummy-host.www.phpStudy.net
  •   DocumentRoot "d:/web/openj"
  •   
  内容分享来源:http://blog.sina.com.cn/bugsqb



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638196-1-1.html 上篇帖子: Apache(httpd)监听标准 下篇帖子: win7(64)下安装配置php5+apache2.2.4+mysql文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表