1.Nginx的功能模块

    Nginx软件的强大是由于它具有众多的功能模块,下面列出企业中常用的重要模块。

    (1)Nginx核心功能模块(Core functionality)

    Nginx核心功能模块负责Nginx的全局应用,主要对应主配置文件的Main区块和Event区块区域,这里有很多的Nginx必须的全局参数配置。

    (2)标准的http功能模块集合

    这些标准的http功能模块,虽然不是Nginx软件所需,但是都是很常用的,因此绝大部分都默认安装到Nginx软件中,不建议擅自改动,保留软件的默认设置就好,除非你明确知道你要做什么,有什么影响。这些模块包括像:ngx_http_core_module,ngx_http_access_module,ngx_http_gzip_module,ngx_http_upstream_module,ngx_http_proxy_module,ngx_http_log_module模块等等,具体的说明可以自行百度或者到官网查询。

    2.Nginx的目录说明

Nginx配置文件简介及多域名虚拟主机配置_虚拟主机

    其中conf的配置文件较多,最为重要的是nginx.conf的文件,这是nginx的主配置文件。带有default的文件都是备份文件。

    3.Nginx的主配置文件

    Nginx的配置文件是一个纯文本文件,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的。每个block一般以一个大括号“{ }”来表示,block可以分为几个层次,整个配置文件中Main指令位于最高层,在Main层下面可以有Events、HTTP等层级,而在HTTP层中又包含有Server层,即server block,server block中又可分为location层,并且一个server block中可以包含多个location block。
    一个完整的配置文件结构如下图所示。

Nginx配置文件简介及多域名虚拟主机配置_CentOS_02

Nginx配置文件注释:

worker_processes  1;    #worker进程的数量
events {                #事件块的开始
    worker_connections  1024;            #每个worker进程支持的最大连接数
}                       #事件块的结束
http {                  #HTTP区块的开始
    include       mime.types;                #Nginx支持媒体类型库文件
    default_type  application/octet-stream;    #默认的媒体类型
    sendfile        on;                        #开启高速传输模式
    keepalive_timeout  65;                     #连接超时
    server {                                    #第一个server区块的开始
        listen       80;                        #提供服务的端口,默认为80
        server_name  localhost;                 #提供服务的域名主机
        location / {                            #第一个location区块的开始
            root   html;                        #站点的根目录,相当于Nginx的安装目录
            index  index.html index.htm;        #默认的首页文件,多个使用空格隔开
        }                                        #第一个location区块的结束
        error_page   500 502 503 504  /50x.html;    #出现对应的http状态码是,使用50x.html回应客户
        location = /50x.html {                    #location区块的开始,访问50x.html
            root   html;                            #指定对应的站点目录为html
        }
    }
}                                                   #HTTP区块的结束

    4、虚拟主机的概念及配置

    虚拟主机,在web服务里面就是一个独立的网站站点啊,这个站点对应独立的域名(也可以是IP或者端口),具有独立的程序和资源目录,可以独立地对外提供服务供用户访问。这个独立的站点在配置里是由一定格式的标签段标记的,对于Apache软件来说,一个虚拟主机的标签通常包含在<VirtualHost></VirtualHost>里面,而Nginx则是用server{}标签来标识一个虚拟主机。一个web服务可以有多个虚拟主机的标签对,即可以同时支持多个虚拟主机站点。

    虚拟主机主要包含有三种类型,一是基于域名的虚拟主机,二是基于端口的虚拟主机还有就是基于IP的虚拟主机。最为常见的是基于域名和端口的,下面我们以基于域名的为例讲解如何配置虚拟主机。本次实验会配置两个虚拟主机,分别是www.pcm.com以及bbs.pcm.com。

    (1)在html目录下新建虚拟主机的目录www和bbs,并写入首页文件。

mkdir /usr/local/nginx/html/www/
mkdir /usr/local/nginx/html/bbs/
echo "这是www站点,IP地址为:192.168.31.10" >> /usr/local/nginx/html/www/index.html
cho "这是bbs站点,IP地址为:192.168.31.10" >> /usr/local/nginx/html/bbs/index.html

    (2)修改nginx.conf配置文件,在conf目录下新建extra目录用来放置www和bbs的配置文件。

cd /usr/local/nginx/conf        
egrep -v "#|^$" nginx.conf.default >nginx.conf    #不要注释和空行的nginx的配置文件

 修改之后的配置文件如下所示,删除了server区块,把server区块写入到extra目录对应的文件里面,用include引用这些配置文件。

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	include extra/www.conf;    #这样可以直接引用 
	include extra/bbs.conf;
}

    (3)在conf目录下新建目录extra,然后在该目录下新建 www.conf以及bbs.conf两个文件

mkdir extra
touch extra/www.conf
touch extra/bbs.conf

这两个文件的配置如下


www.confbbs.conf

server {

listen       80;

server_name  www.pcm.com;

location / {

root   html/www;

index  index.html index.htm;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

server {

listen       80;

server_name  bbs.pcm.com;

location / {

root   html/bbs;

index  index.html index.htm;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

    (4)修改hosts文件,增加对域名www.pcm.com和bbs.pcm.com的解析,这样我们可以直接在本机上做测试了。


echo "192.168.31.10   www.pcm.com bbs.pcm.com cms.pcm.com blog.pcm.com" >>/etc/hosts

    (5)检查nginx.conf文件有没有语法问题,没有的话重新加载nginx。

/usr/local/nginx/sbin/nginx -t

Nginx配置文件简介及多域名虚拟主机配置_Nginx_03

/usr/local/nginx/sbin/nginx -s reload    #重新加载配置文件,平滑重启,不建议用restart重启

    (6)本机上,用curl测试。

Nginx配置文件简介及多域名虚拟主机配置_虚拟主机 _04Nginx配置文件简介及多域名虚拟主机配置_虚拟主机 _05

    (7)在windows主机上做测试(可选)

    打开winows的hosts文件,增加这两行,文件所在路径是:C:\Windows\System32\drivers\etc

    Nginx配置文件简介及多域名虚拟主机配置_Nginx_06

    然后用浏览器输入网址验证,到这里,nginx的虚拟主机配置成功。

Nginx配置文件简介及多域名虚拟主机配置_CentOS_07

Nginx配置文件简介及多域名虚拟主机配置_Nginx_08