nginx虚拟主机配置实战

1,虚拟主机概念和类型介绍

    所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问。

    这个这个独立的站点在配置里是由一定格式的标签段标记,对于apache软件来说,一个虚拟主机的标签段通畅被包含在内,而nginx软件则使用一个server{}标签来标示一个虚拟主机,一个web服务里可以有多个虚拟主机主机标签对,即同时可以支持多个虚拟主机站点。

2,虚拟主机类型

    常见的虚拟主机类型有如下几种

     2.1    基于域名的虚拟主机

    所谓基于域名的虚拟主机,意思就是通过不同的域名区分不通的虚拟主机,基于域名的虚拟主机是企业应用最广的虚拟主机类型,几乎所有对外提供服务的网站都是使用基于域名的虚拟主机,例如:www.etiantian.org

    2.2    基于端口的虚拟主机

    同理,所谓基于端口的虚拟主机,意思就是通过不同的端口来区分不同的虚拟主机。此类虚拟主机对应的企业应用主要为公司内部的网站,例如:一些不希望直接对外提供用户访问的网站后台等,访问基于端口的虚拟主机地址里要带有端口,例如:http://www.etiantian.org:9000

    2.3    基于IP的虚拟主机

    同理,所谓基于IP的虚拟主机,意思就是通过不同的IP区分不同的虚拟主机,此类虚拟主机对应的企业应用非常少见,一般不同业务需要使用多IP的常见都会在负载均衡器上进行VIP绑定,而不是在Web上通过绑定IP区分不同的虚拟机。

    三种虚拟主机类型均可独立使用,也可以互相混合一起使用。 把基于域名的虚拟主机类型是重点。


3,基于域名的虚拟主机配置实战

[root@web01 conf]# pwd
/application/nginx/conf
[root@web01 conf]# vim nginx.conf 原来的nginx.conf
  1 worker_processes  1;
  2 events {
  3     worker_connections  1024;
  4 }
  5 http {
  6     include       mime.types;
  7     default_type  application/octet-stream;
  8     sendfile        on;
  9     keepalive_timeout  65;
 10     server {
 11         listen       80;
 12         server_name  www.etiantian.org;
 13         location / {
 14             root   html;
 15             index  index.html index.htm;
 16         }
 17         error_page   500 502 503 504  /50x.html;
 18         location = /50x.html {
 19             root   html;
 20         }
 21     }
 22 }
[root@web01 conf]# vim nginx.conf #增加后的虚拟主机配置文件
  
  3     worker_connections  1024;
  4 }
  5 http {
  6     include       mime.types;
  7     default_type  application/octet-stream;
  8     sendfile        on;
  9     keepalive_timeout  65;
 10     server {
 11         listen       80;
 12         server_name  ;#基于域名的虚拟主机
 13         location / {
 14             root   html/www;    #域名www.etiantian.org对应自己的www站点
 15             index  index.html index.htm;#首页文件名字,和下面的bbs站点不在一个路径中
 16         }
 17         }
 18     server {
 19         listen       80;
 20         server_name  bbs.etiantian.org;#基于域名的虚拟主机
 21         location / {
 22             root   html/bbs;    #域名bbs.etiantian.org对应自己的bbs站点
 23             index  index.html index.htm;#首页文件名字,和上面的www站点不在同一个路径
 24         }
 25         }
 26     }
 27 }
[root@web01 conf]# mkdir ../html/{www,bbs} -p
[root@web01 conf]# echo "www" >../html/www/index.html
[root@web01 conf]# echo "bbs" >../html/bbs/index.html