一、虚拟主机的概念和类型介绍
1.虚拟主机概念
虚拟主机在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立的对外提供服务供用户访问。
这个独立的站点在配置里是由一定格式的标签段标记的,对于Apache软件来说,一个虚拟主机的标签段通常被包含在<VirtualHost></VirtualHost>内,而Nginx软件则使用的一个server{}标签来标示一个虚拟主机.一个web服务里可以有多个虚拟主机标签对,既可以同时支持多个虚拟主机站点。
2.虚拟主机类型
常见的虚拟主机类型有:
1>、基于域名的虚拟主机
是通过不同的域名区分不同的虚拟主机,基于域名的虚拟主机是企业应用最广泛的虚拟主机类型。
2>、基于端口的虚拟主机
是通过不同的端口来区分不同的虚拟主机
3>、基于IP的虚拟主机
通过不同的IP区分不同的虚拟主机
二、基于域名的虚拟主机配置实战
适用于企业级应用部署
<1>、配置基于域名的Nginx.conf内容
使用grep过滤命令来生成基础的Nginx主配置文件nginx.conf,然后根据生成的初始配置进行修改,使其成为所需的形式。
[root@bigdata conf]# diff nginx.conf.default nginx.conf ##<==初始时这两个配置文件是一致的
【Linux diff命令用于比较文件的差异。
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。】
##<==过滤包含#号和空行,生成新文件nginx.conf
[root@bigdata conf]# egrep -v "#|^$" nginx.conf.default >nginx.conf
过滤后的结果:
然后编辑nginx.conf文件
虚拟主机的关键部分就是server{}标签大括号里面的内容
<2>、创建域名对应的站点目录及文件
[root@bigdata conf]# mkdir -p html/www ###创建域名对应的站点目录
[root@bigdata conf]# echo "http://www.etiantian.org" > html/www/index.html ###追加内容到index.html文件中
[root@bigdata conf]# cat html/www/index.html
http://www.etiantian.org
root根目录的html/www设置(root html/www;).然后生成一个默认的首页文件index.html,文件内容是“http://www.etiantian.org”
<3>、检查语法并重新加载Nginx
首先检查修改过的Nginx配置文件语法是否正确.
[root@bigdata sbin]# ./nginx -t
提示:出现“syntax is ok”或“successful”,说明语法是正确的
平滑重启Nginx,即重新加载配置文件.
[root@bigdata sbin]# ./nginx
[root@bigdata sbin]# netstat -lntp|grep 80
测试域名站点配置的访问结果
第一步:配置hosts域名解析文件
第二步:进行curl访问
[root@bigdata conf]# curl www.etiantian.org
http://www.etiantian.org
<4>、配置多个基于域名的虚拟主机
创建新虚拟主机站点对应目录和文件
使用shell脚本进行创建:
[root@bigdata conf]# cat mkdir_zhn.sh
#!/bin/sh
for n in www blog bbs;
do
mkdir -p ../html/$n;
echo "http://${n}.etiantian.org" > ../html/$n/index.html;
cat ../html/$n/index.html;
done
三、基于端口的虚拟主机配置实战
适用于公司内部如OA/网站后台程序/CMS发布后台/MYSQL的web客户端等.
<1>、配置虚拟主机监听端口
要配置基于端口的虚拟主机,就需要为每个虚拟主机配置不同的端口.配置nginx.conf文件中的“listen 80”这个配置行的80端口修改掉
看到了三个端口
四、基于IP的虚拟主机配置实战
基于IP的虚拟主机在生产环境中的应用更为少见.
<1>、在服务器网卡上增加多个IP
既然要配置基于IP的虚拟主机,就需要让虚拟主机有不同的IP地址,此处以增加辅助IP的形式临时在eth0网卡上增加2个不同的IP
[root@bigdata sbin]# ip addr add 10.0.0.9/24 dev eht0
[root@bigdata sbin]# ip addr add 10.0.0.10/24 dev eht0
<2>、增加虚拟主机配置
每次修改完Nginx.conf配置后需要重新加载Nginx服务使修改的配置文件进行生效.
五、Nginx配置虚拟主机的步骤
<1>.增加一个完整的server标签段到结尾处。注意要放在http的结束大括号前,也就是将server标签段放入http标签.
<2>.更改server_name及对应网页的root根目录
<3>.创建server_name域名对应的根目录,并建立测试文件,如果没有index首页,访问会出现403错误。
<4>.检查Nginx配置文件语法,平滑启动Nginx服务,快速检查启动结果。
<5>.在客户端对server_name出配置的域名做host解析或DNS配置,并检查(ping域名看返回的IP是否正确)
一、删除一个文件的多少行到多少行
# sed -i '10 ,33d' nginx.conf #删除nginx文件10行到33行的内容
二、向一个文件中插入字段
# sed -i ' 10 i include extra/www.conf;\ninclude extra/bbs.conf;\ninclude extra/blog.conf;' nginx
#sed插入命令生效的结果是配置文件中第10行开始的地方增加三行包含虚拟主机文件的配置.
三、为Nginx增加错误日志(error_log)配置
error_log的语法格式及参数语法说明如下:
error_log file level;
关键字 日志文件 错误日志级别
日志级别有:【debug|info|notice|warn|error|crit|alert|emerg】
生产环境一般是:【warn|error|crit】三个级别
注意不要用info等级较低的级别,会带来巨大磁盘I/O消耗.