您的位置:首页 > 运维架构 > Apache

apache虚拟主机

2015-11-26 11:12 591 查看
访问web从协议上)默认是80)
这个时候就需要设置虚拟主机(VirtualHost).基于域名,以及它们的混合
 
的主目录/var/www/html/如s1下面建立index.html配置server为它添加2设置的文章将客户机的DNS这2每次修改配置文件httpd.conf才能使配置生效
 
这是一种最通用的情况,修改httpd.conf监听的所有IP上做多域名虚拟主机
<VirtualHost *>
    ServerAdmin xxx@xxx.com
    DocumentRoot /var/www/html/s1
    ServerName s1.domain1.com
    ErrorLog logs/ error_log
    TransferLog logs/ access_log
</VirtualHost>
 
<VirtualHost *>
    ServerAdmin xxx@ixxx.com
    DocumentRoot /var/www/html/s2
    ServerName  s2.domain1.com
    ErrorLog logs/error_log
    TransferLog logs/access_log
</VirtualHost>
然后在测试机上访问这两个域名:s1.domain1.com问题:看到的是什么?
注意上面的这段话
*:*                    is a NameVirtualHost
default server s1.domain1.com
监听的任意IP而s1.domain1.com除非访问的是我们设置的域名,通过访问同一个IP(对httpd.conf将之前做的多域名虚拟主机去掉(即
# Use name-based virtual hosting.
#
# NameVirtualHost *    注意下面的配置部分我并没用ServerName在客户端通过访问IP:80混合实验
例如
和s2.domain1.com
和s4.domain2.com默认端口所以不需要写端口号
配置过程
增加之后记得要重启bind.
增加监听口
Listen 80
Listen 81
的80即为名称虚拟主机的意思)
<VirtualHost *:80>
    ServerAdmin xxx@xxx.com
    DocumentRoot /var/www/html/s1
    ServerName s1.domain1.com
    ErrorLog logs/ error_log
    TransferLog logs/ access_log
</VirtualHost>
 
<VirtualHost *:80>
    ServerAdmin xxx@xxx.com
    DocumentRoot /var/www/html/s2
    ServerName  s2.domain1.com
    ErrorLog logs/ error_log
    TransferLog logs/access_log
</VirtualHost>
 
 
<VirtualHost *:81>
    ServerAdmin xxx@xxx.com
    DocumentRoot /var/www/html/s3
    ServerName  s3.domain2.com
    ErrorLog logs/error_log
    TransferLog logs/access_log
</VirtualHost>
 
<VirtualHost *:81>
    ServerAdmin xxx@xxx.com
    DocumentRoot /var/www/html/s4
    ServerName  s4.domain2.com
    ErrorLog logs/error_log
    TransferLog logs/access_log
</VirtualHost>
 
端口默认访问到s3这句话表示这是访问80后面会看到效果)
         port 80 namevhost s1.domain1.com (/usr/local/apache2/conf/httpd.conf:1065)
         port 80 namevhost s2.domain1.com (/usr/local/apache2/conf/httpd.conf:1073)
Syntax OK
注意这两个是默认端口80
http://s3.domain2.com:81/
http://s4.domain2.com:81/ 如直接访问http://s4.domain2.com 因为从80是80如果用80则会看到s3是81的虚拟主机
访问不同的IP,而且大家一般都是用域名访问的.适用环境:server访问.
服务.
随系统启动
BOOTPROTO=static
IPADDR=192.168.0.112 //查看当前ip确实启用成功.
下面对httpd.conf注意上面红色的部分,在多端口的时候这样做是可以的).作为域名给解析了.
"httpd.conf" 1157L, 38072C written                                                                        
[root@server1 conf]# ../bin/httpd -S
[Mon Jul 30 14:09:06 2007] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.0.112 (check DNS) -- or specify an explicit ServerName
[Mon Jul 30 14:09:06 2007] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.0.111 (check DNS) -- or specify an explicit ServerName
VirtualHost configuration:
192.168.0.111:*        bogus_host_without_reverse_dns (/usr/local/apache2/conf/httpd.conf:1065)
192.168.0.112:*        bogus_host_without_reverse_dns (/usr/local/apache2/conf/httpd.conf:1074)
Syntax OK
 
后面的名称我们随意写
<VirtualHost 192.168.0.111>
    ServerAdmin hong.yao@infonaligy.com
    DocumentRoot /var/www/html/s1
    ServerName s1
    ErrorLog logs/dbpi_web-error_log
    TransferLog logs/dbpi_web-access_log
</VirtualHost>
 
<VirtualHost 192.168.0.112>
    ServerAdmin hong.yao@infonaligy.com
    DocumentRoot /var/www/html/s2
    ServerName s2
    ErrorLog logs/dbpi_web-error_log
    TransferLog logs/dbpi_web-access_log
</VirtualHost>
 
和192.168.0.112因为在这种情况下并不需要域名访问,相应的ServerName完全没问题).常常会碰到的问题
还是能够正常的启动和访问,将这句话修改如下
ServerName 192.168.0.111 <span times="" new="" roman';="" mso-hansi-font-family:="" 'times="" roman'"="" style="padding: 0px; margin: 0px; font-family: 宋体;">当然根据你的实际情况修改为本机的IP<span times="" new=""
roman';="" mso-hansi-font-family:="" 'times="" roman'"="" style="padding: 0px; margin: 0px; font-family: 宋体;">或者域名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: