apache nginx 多站点部署

【基本介绍】
apache 和 nginx 多站点部署,一般情况有基于端口,基于域名,基于IP。


【基于域名】
每个虚拟主机的站点放在不同目录中,并配置不同的域名
#第一个虚拟主机
  server{
    listen 80 ; #监听的端口
    server_name aaa.domain.com;  #主机名称
    access_log logs/aaa.domain.com.access.log combined ;    #访问日志文件存放路径
    location /
    {
        index index.html index.htm;
        root /data0/htdocs/aaa.domain.com;
    }
  }
  #第二个虚拟主机
  server{
    listen 80;
    server_name www.domain.com domain.com *.domain.com;
    access_log logs/bbb.domain.com.access.log bombined ;
    location /
    {
        index index.html index.htm ;
        root /data0/htdocs/domain.com;
    }
  }
}


apache:
NameVirtualHost *:80
<VirtualHost 第一个域名>
DocumentRoot /var/www/html/website1
ServerName 第一个域名</VirtualHost>

<VirtualHost 第二个域名>
DocumentRoot /var/www/html/website2
ServerName 第二个域名</VirtualHost>

<VirtualHost 第三个域名>
DocumentRoot /var/www/html/website3
ServerName 第三个域名</VirtualHost>

【基于端口号】
基于端口号的虚拟主机是通过给每个server配置一个不同的监听端口实现的

server{
    listen 80 ; #监听的端口
    access_log logs/aaa.domain.com.access.log combined ;
    location /
    {
        index index.html index.htm;
        root /data0/htdocs/aaa.domain.com;
    }
  }
  #第二个虚拟主机
  server{
    listen 88;   #监听不同的端口
    access_log logs/bbb.domain.com.access.log bombined ;
    location /
    {
        index index.html index.htm ;
        root /data0/htdocs/domain.com;
    }
  }
}

apache:
<VirtualHost ip:80>
DocumentRoot /var/www/html/website1
ServerName localhost:80</VirtualHost>

<VirtualHost ip:81>
DocumentRoot /var/www/html/website2
ServerName localhost:81</VirtualHost>

<VirtualHost ip:82>
DocumentRoot /var/www/html/website3
ServerName localhost:82</VirtualHost>

【基于ip】-> 未测试
IP别名背后的概念很简单:可以在一块物理网卡上绑定多个IP地址.这样就能够在使用单一网卡的同一服务器上运行多个基于IP的虚拟主机.

如果要在eth0网卡设备上添加两个IP别名192.168.8.43和192.168.8.44可以通过以下ifconfig 和route命令来进行:
/sbin/ifconfig eth0:1 192.168.8.43 broadcast 192.168.8.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.8.43 dev eth0:1
/sbin/ifconfig eth0:2 192.168.8.44 broadcast 192.168.8.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.8.44 dev eth0:2
配置后如果能从另外一台服务器ping 192.168.8.43和192.168.8.44 ,如果能ping通,则证明配置无误.

但是通过ifconfig 和route配置的IP别名在服务器重启后会消失.不过可以将这两条命令添加到/etc/rc.local文件中,让系统开机时自动运行,
vi /etc/rc.local在文件末尾增加以下内容,然后保存即可.
/sbin/ifconfig eth0:1 192.168.8.43 broadcast 192.168.8.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.8.43 dev eth0:1
/sbin/ifconfig eth0:2 192.168.8.44 broadcast 192.168.8.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.8.44 dev eth0:2

分别对192.168.8.43,192.168.8.44,192.168.8.45三个IP配置三个纯静态HTML支持的虚拟主机
http{
  #第一个虚拟主机
  server{
    listen 192.168.8.43:80;     #监听的IP和端口
    server_name 192.168.8.43;     #主机名称
    access_log logs/sever1.access.log combined ;     #访问日志文件存放路径
    location /
    {
      #默认首页文件,顺序从左到右,如果找不到index.html,则找index.htm
      index index.html index.htm
      #HTML网页文件存放的目录
      root /data0/htdocs/server1;
    }
  }
  #第二个虚拟主机
  server{
    listen 192.168.8.44:80;
    server_name 192.168.8.44;
    access_log logs/sever2.access.log combined ;
    location /
    {
      #默认首页文件,顺序从左到右,如果找不到index.html,则找index.htm
      index index.html index.htm
      #HTML网页文件存放的目录
      root /data0/htdocs/server2;
    }
  }



【参考】
http://blog.csdn.net/guzhouke19910920/article/details/7992498
http://blog.csdn.net/winter13292/article/details/8364620
http://blog.openlg.net/index.php/archives/266
http://blog.csdn.net/winter13292/article/details/8364620

你可能感兴趣的:(apache,nginx,多站点)