Apache VirtualHost 默认配置的关键 深入理解 – Haswell

http://www.cnblogs.com/wpjsolo/archive/2012/01/19/2327457.html

 

以lampp环境为例子,其他环境只是配置文件的路径不同。

先要在   lampp/etc/httpd.conf ( 这个是Apache 总的配置文件)中,将虚拟路径的注释去掉。

#Include etc/extra/httpd-vhosts.conf

使httpd-vhosts.conf文件起作用,或者直接在httpd.conf中写配置也可以,但不建议这么做。

相关的配置有:Listen  NameVirtualHost  <VirtualHost>

1.  Listen  要监听的端口,多个端口,要写多个Listen;否则Apache启动的时候,不会启动相应的套接字。

比如

Listen 80

Listen 8080

2.NameVirtualHost 如果没有这个,<VirtualHost>标签就没什么作用。

(感谢okiwill的指正,这里特指基于域名访问的情况,若是基于IP访问的,以第一个指定IP的VirtualHost为准,每个IP可以单独指定)

一个NameVirtualHost 可以对用多个<VirtualHost>,每个<VirtualHost>必须有自己的NameVirtualHost(我猜的)

NameVirutalHost *:80

制定这个主机的IP和端口,如果服务器上有多个IP,就可以制定某个IP的某个端口是哪个 主机。

(新版的Apache已经去除了NameVirtualHost 这个配置,因为确实没什么用,参数在VirtualHost中都已经指明了)

3  最关键的VirtualHost

重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。

因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)

和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认。

所以,我的第一个VirtualHost是

<VirtualHost *:80>

ServerName *

DocumentRoot </opt/lampp/htdocs/guest>

<Directory /opt/lampp/htdocs/guest>

Order deny,allow

Allow from all

</Direcotry>

<VirtualHost/>

后面的,依次添加就可以

<VirtualHost *:80>

ServerName www.myweb1.com

DocumentRoot </opt/lampp/htdocs/myweb1>

<Directory /opt/lampp/htdocs/myweb1>

Order deny,allow

Allow from all

</Direcotry>

<VirtualHost/>

 

绑定二级域名

Apache是最流行的HTTP服务器软件之一,其以快速、可靠(稳定)而著称,并且可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,完全免费,并且源代码全部开放。如果有自己的服务器或者VPS,并且不想为了方便而购买昂贵的控制面板的话,那自己动手配置Apache就成了一门必修课了。下面简单的介绍了如何通过设置Apache的http.conf文件,进行多个域名以及其相关的二级域名的绑定(假设我们要绑定的域名是minidx.com和ntt.cc,二级域名是blog.minidx.com,独立IP为72.167.11.30).

apache怎么绑定多个域名
打开http.conf
1,ServerName 127.0.0.1 修改成ServerName 72.167.11.30
2,#NameVirtualHost *   修改成”NameVirtualHost 72.167.11.30″
3,在文件最后面有虚拟主机格式,
#<VirtualHost *>
#   ServerAdmin [email]admin@minidx.com[/email]
#   DocumentRoot /www/httpd/html/minidx.com
#   ServerName minidx.com
#   ErrorLog logs/minidx.com-error_log
#   CustomLog logs/minidx.com-access_log common
#</VirtualHost>
简单的添加:
< VirtualHost 72.167.11.30>
DocumentRoot usr/local/www/
ServerName   72.167.11.30
< /VirtualHost>
< VirtualHost 72.167.11.30>
DocumentRoot usr/local/www/minidx.com/
ServerName   minidx.com
< /VirtualHost>
< VirtualHost 72.167.11.30>
DocumentRoot   usr/local/www/ntt.cc/
ServerName   ntt.cc
< /VirtualHost>

日志文件的话也可以按照自己的路径添加。

Apache如何添加二级域名
httpd.conf 中需要打开mod_rewrite功能(关于URL重定向的具体说明,可以参照.htaccess使用方法总结),具体操作就是,在httpd.conf 的最后,添加以下内容:
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改(例如在/etc/httpd/下面)。然后,在这个所在路径的目录下创建一个文件: vhost.map,内容为:
www.minidx.com /usr/local/www/minidx.com
www.ntt.cc /usr/local/www/ntt.cc
blog.minidx.com /usr/local/www/minidx.com/blog
最后,在网站根目录 /usr/local/www/下,创建对应目录就可以了。如果需要增加,修改或者删除域名,子域名,仅仅需要更改vhost.map文件,而不用重启apache进程。

补充:这篇日记最后添加二级域名的方法使用的是apache的mod_rewrite模块,也可以不使用mod_rewrite模块实现,只要如上介绍的绑定主域名的方法添加<VirtualHost>标签,  DocumentRoot部分设置成要绑定的目录,  ServerName设置成二级域名即可。

分类: ApacheLinux

0 条评论

发表评论