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的目录说明
其中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配置文件注释:
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.conf | bbs.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
/usr/local/nginx/sbin/nginx -s reload #重新加载配置文件,平滑重启,不建议用restart重启
(6)本机上,用curl测试。
(7)在windows主机上做测试(可选)
打开winows的hosts文件,增加这两行,文件所在路径是:C:\Windows\System32\drivers\etc
然后用浏览器输入网址验证,到这里,nginx的虚拟主机配置成功。