导航:首页 > IDC知识 > apache虚拟主机多个域名

apache虚拟主机多个域名

发布时间:2021-03-09 03:09:19

1、如何为Apache绑定多IP多域名

无论Windows主机还是Linux主机,在Apache接收处理前,首要要确保这些IP地址已经映射到APACHE服务上,也就是说,对要首先保证操作系统本身接受这些IP地址访问,Windows绑定多IP参考前一篇文章(如何为Windows绑定多个IP和多个域名 ),Linux绑定多IP地址先自行搜索解决,以后再补充。

测试之前,确保域名已经解析到本服务器上且已生效。

本文默认按照80端口配置,还可以通过同IP但不同端口来区分不同网站,该情况一般是用在主机管理上。举个例子:可以使用http://192.168.1.100作为正常网址,而http://192.168.1.100:2020则可以用来做后台配置管理等。

绑定方法有很多种,比如虚拟绑定、单IP多域名绑定、多IP单域名绑定、多IP多域名绑定、端口识别绑定等等,而且每种绑定可能还有不同的实现方法,根据自己习惯和场合选择使用。

一、Apache绑定单IP多域名

1、示例绑定:

IP地址192.168.1.100

比如:对应两个域名http://chaodiquan.com和http://chaodiquan.cn(域名)

2、绑定过程

a、打开http.conf,该文件位置在apache/conf下面,直接用文本编辑器即可打开。

b、添加以下字段,位置靠近ServerName 127.0.0.1或ServerName localhost:80下面附近,方便修改和理解。

view source
print?
1 <VirtualHost 192.168.1.100>

2 DocumentRoot D:/xampp/htdocs/chaodiquan.com

3 ServerName zhanhelp.com

4 </VirtualHost>

5 <VirtualHost 192.168.1.100>

6 DocumentRoot D:/xampp/htdocs/chaodiquan.com/wwwroot

7 ServerName chaodiquan.cn

8 </VirtualHost>

这个方法是对指定IP地址的主机比较适合,但是如果是动态获取IP地址的主机就有问题了,则可以把<VirtualHost 192.168.1.100>统一修改为<VirtualHost *:80>,这样设置后APACHE不再对IP区分,只根据ServerName和处理优先级识别。比如很多虚拟主机要求使用CNAME解析域名,那么该虚拟主机的IP可能会变化的,就无法使用上面的配置方法,还是<VirtualHost *:80>要更好用一些。

补充一下,如果是Linux主机,DocumentRoot字段需要修改为类似:

usr/local/www/chaodiquan.com/

usr/local/www/chaodiquan.com/wwwroot

这样的路径,该路径指向网站所在根目录或子目录。

c、此外还可以为每个域名指定单独的错误日志(ErrorLog)及用户日志地址(CustomLog)只需要把下面两句添加到上述<VirtualHost ...></VirtualHos>字段之间即可,示例如下(具体存储地址可根据实际情况修改掉):

ErrorLog "logs/error.log"

CustomLog "logs/access.log" combined

d、重启Apache服务即可生效。

二、Apache绑定多IP多域名

1、示例绑定

IP地址192.168.1.100/192.168.1.101
对应两个域名http://chaodiquan.com和http://chaodiquan.cn

2、绑定过程

步骤同上文,还是打开httpd.conf,然后增加下面脚本。

view source
print?
1 <VirtualHost 192.168.1.100>

2 DocumentRoot D:/xampp/htdocs/chaodiquan.com

3 ServerName chaodiquan.com

4 </VirtualHost>

5 <VirtualHost 192.168.1.101>

6 DocumentRoot D:/xampp/htdocs/chaodiquan.cn

7 ServerName chaodiquan.cn

8 </VirtualHost>

这样就是两个IP地址对应两个域名。实际上在上面的单IP地址绑定中,提到<VirtualHost *:80>这样的设置方式也可以用来多IP访问,只是只能使用ServerName来区分,而如果输入对应的IP地址来访问,APACHE只会显示符合第一个优先级网站(假设无端口区分条件下),因为它无法判断IP地址与多域名之间的映射关系,所以使用明确的IP地址配置还是有点好处,支持直接输入IP地址访问,只是看起来不太好。

补充一下,如果是Linux主机,DocumentRoot字段需要修改为类似:

usr/local/www/chaodiquan.com/

usr/local/www/chaodiquan.com/wwwroot

这样的路径,该路径指向网站所在根目录或子目录。

2、apache多站点虚拟主机,每个域名一个日志文件

参考 :http://httpd.apache.org/docs/2.2/logs.html

Piped Logs ,管道日志。
CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common

希望对你有用。

3、服务器上的linux系统 apache怎么配置多个域名解析

最简单高效的方法如下: 1. 先打开Apache的配置文件httpd.conf,在这个文件, 找到这句:“#Include etc/extra/httpd-vhosts.conf” (根据安装路径不同,上面的路径会略有不同) 把前面的#去掉,即开启了使用虚拟主机的功能;

4、用两个域名指向apache下两个虚拟主机行吗?

指向同一个IP,虚拟主机绑定不一样的域名就行了

5、apache 配置多域名需要改什么

需要添加虚拟主机,配置文件应该是 apache目录/conf/extra/httpd-vhosts.conf,这个文件中有示例,照着配一下即可,以下为一个简单的例子,有以下几项的简单配置就可以运行了,如果需要别名、rewrite都可以加在里边,
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/home/xyz/htdocs"
ServerName xyz.abc.com
<Directory "/home/xyz/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

然后在httpd.conf中把这个文件载入:Include conf/extra/httpd-vhosts.conf

6、apache 下多个域名多个目录 怎么配置 SSL

下面是apache 的文档: 必须指定服务器IP地址(和可能的端口)来使主机接受请求,这个可以用NameVirtualHost指令来进行配置。如果服务器上所有的IP地址都会用到,你可以用"*"作为NameVirtualHost的参数。如果你打算使用多端口(如运行SSL)你必须在参数中指定一个端口号,比如"*:80"。请注意,在NameVirtualHost指令中指定IP地址并不会使服务器自动侦听那个IP地址。请参阅设置Apache使用的地址和端口一章获取更多详情。另外,这里设定的IP地址必须对应服务器上的一个网络接口。 下一步就是为每个虚拟主机建立<VirtualHost>段。<VirtualHost>的参数与NameVirtualHost的参数必须是一样的(比如说,一个IP地址或"*"代表的所有地址)。在每个<VirtualHost>段中,至少要有一个ServerName指令来指定伺服哪个主机和一个DocumentRoot指令来说明这个主机的内容位于文件系统的什么地方。 取消中心主机(Mainhost) 如果你想在现有的web服务器上增加虚拟主机,你必须也为现存的主机建造一个<VirtualHost>定义块。这个虚拟主机中ServerName和DocumentRoot所包含的内容应该与全局的ServerName和DocumentRoot保持一致。还要把这个虚拟主机放在配置文件的最前面,来让它扮演默认主机的角色。 比如说,假设你正在为域名www.domain.tld提供服务,而你又想在同一个IP地址上增加一个名叫www.otherdomain.tld的虚拟主机,你只需在httpd.conf中加入以下内容: NameVirtualHost *:80 <VirtualHost *:80> ServerName www.domain.tld ServerAlias domain.tld *.domain.tld DocumentRoot /www/domain </VirtualHost> <VirtualHost *:80> ServerName www.otherdomain.tld DocumentRoot /www/otherdomain </VirtualHost> 当然,你可以用一个固定的IP地址来代替NameVirtualHost和<VirtualHost>指令中的"*"号,以达到一些特定的目的。比如说,你可能会希望在一个IP地址上运行一个基于域名的虚拟主机,而在另外一个IP地址上运行一个基于IP的或是另外一套基于域名的虚拟主机。 很多服务器希望自己能通过不只一个域名被访问。我们可以把ServerAlias指令放入<VirtualHost>小节中来解决这个问题。比如说在上面的第一个<VirtualHost>配置段中ServerAlias指令中列出的名字就是用户可以用来访问同一个web站点的其它名字: ServerAlias domain.tld *.domain.tld 这样,所有对域domain.tld的访问请求都将由虚拟主机www.domain.tld处理。通配符标记"*"和"?"可以用于域名的匹配。当然你不能仅仅搞个名字然后把它放到ServerName或ServerAlias里就算完了。你必须先在你的DNS服务器上进行配置,将这些名字和您服务器上的一个IP地址建立映射关系。 最后,你可以把其他一些指令放入<VirtualHost>段中,以更好的配置一个虚拟主机。大部分指令都可以放入这些<VirtualHost>段中以改变相应虚拟主机配置。如果您想了解一个特定的指令是否可以这样运用,请参见指令的作用域。主服务器(main server)范围内的配置指令(在所有<VirtualHost>配置段之外的指令)仅在它们没有被虚拟主机的配置覆盖时才起作用。 这样,当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果能够匹配,它就会查找每个与这个IP地址相对应的<VirtualHost>段,并尝试找出一个与请求的主机名相同的ServerName或ServerAlias配置项。如果找到了,它就会使用这个服务器。否则,将使用符合这个IP地址的第一个列出的虚拟主机。 综上所述,第一个列出的虚拟主机充当了默认虚拟主机的角色。当一个IP地址与NameVirtualHost指令中的配置相符的时候,主服务器中的DocumentRoot将永远不会被用到。所以,如果你想创建一段特殊的配置用于处理不对应任何一个虚拟主机的请求的话,你只要简单的把这段配置放到<VirtualHost>段中,并把它放到配置文件的最前面就可以了。 认真读完的话,你就知道怎么做了 希望对你有帮助

7、如何在同一台vps上使用apache绑定多个域名(

我有两个域名进行实际操作:fengzhongjincao.com和meiweirenqi.com,我希望两个域名都由同一台VPS提供服务。

首先到DNS解析那里设置正确的A记录,例如

iicode的主机记录为www A记录 记录值为182.254.*.*

fengzhongjincao.com的主机记录为www A记录 记录值为182.254.*.*(这里的记录值和上一个是完全一样的,即同一台VPS)

然后只需要编辑/etc/httpd/conf/httpd.conf文件即可。

因为是基于域名的虚拟主机,因此要将NameVirtualHost *:80前面的#去掉使其生效!(最好检查一下LoadMole rewrite_mole moles/mod_rewrite.so这一句,去掉前面的#使其生效)

然后在httpd.con最后加上虚拟主机的内容

<VirtualHost *:80>
ServerName www.fengzhongjincao.com #浏览器访问www.fengzhongjincao.com的时候
DocumentRoot /var/www/html/www #royalchen的内容路径
DirectoryIndex index.html #首页
</VirtualHost>

<VirtualHost *:80>
ServerName www.meiweirenqi.com #浏览器访问www.meiweirenqi.com的时候
ServerAlias meiweirenqi.com *.meiweirenqi.com
DocumentRoot /var/www/html/iicode #meiweirenqi.com的内容目录
DirectoryIndex index.html
</VirtualHost>

最后重启一下httpd服务即可!这样就可以让一台web服务器绑定两个域名了,多个域名的设置也是完全一样的。

下面再稍微说下二级域名的设置。

其实也是完成一样的,以我的fengzhongjincao.com为例,拥有blog,mail,home,code等多个二级域名。

首先也是设置正确的DNS解析,例如
home A 182.254.*.*
blog A 182.254.*.*(和上面那个是同一个)
一样需要打开NameVirtualHost *:80

然后virtualHost的内容也是差不多的

<VirtualHost *:80>
ServerName home.fengzhongjincao.com
DocumentRoot /var/www/html/home
DirectoryIndex index.htm
</VirtualHost>

<VirtualHost *:80>
ServerName blog.fengzhongjincao.com
DocumentRoot /var/www/html/blog
DirectoryIndex index.PHP
</VirtualHost>

重启httpd之后就可以了,需要注意的是,如果使用了*名字进行模糊匹配,则要将该匹配放到最后,因为apache是顺序下来匹配的!

8、一个虚拟主机如何设置多个二级域名?

虚拟主机想绑定二级域名解决方案如下:
1、在网站根目录新建个.htaccess文件,在此文件中加入以下语句:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$
RewriteCond %{REQUEST_URI} !^/目录名/
# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /目录名/$1
# 目录名/ 后面是首页文件index.php, index.html……
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$
RewriteRule ^(/)?$ 目录名/index.php [L]
2、上面的整套语句是绑定一个子目录,绑定多个子目录,可以重复添加以上的全套语句。

9、在使用Apache网站服务器时,如何实现多个不同域名的虚拟主机

在iis中搭建站点,不同的站点绑定不同的域名就可以实现了,不懂可以扣扣我,郑州景安的vps,四线的,3m独享,一年999
可以开多个网站,有需要可以扣扣我,全程指导

与apache虚拟主机多个域名相关的知识