第4章 nginx进阶 --虚拟主机配置 4.1 【企业要求】需要按照以前nginx服务编译安装过程安装
1、参看已安装服务的配置参数信息
[root@web01 sbin]# /application/nginx/sbin/nginx -V
nginx version: nginx/1.10.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/application/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
-V 参数能显示软件的详细详细,安装配置参数
2、按照配置参数进行部署
4.1.1 【语法检查】检查配置文件
[root@web01 nginx]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
4.2 首页文件不存在--利用nginx服务搭建文件共享服务器通过配置 autoindex on; 参数
使用 autoindex参数,nginx能识别的直接显示,不识别的直接下载
配置完 autoindex on; 参数以后 会显示站点下的文件信息
对于nginx可以解析的资源会解析相应的内容
对于nginx不可以解析的资源会直接下载
4.2.1 进行curl时,报403错误,因为没有首页文件信息
[root@web02 ~]# echo 'web01 www' > /application/nginx/html/www/index.html
<- 在虚拟主机指定的站点目录中创建首页文件
[root@web02 ~]# curl
<- 利用curl命令本地检测nginx配置是否成功;已经存在首页文件,测试成功
4.2.2 autoindex on参数实践1)修改配置文件
[root@web01 www]# cat ../../conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 10.0.0.8:80;
server_name ;
location / {
root html/www;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2)重启服务
[root@web01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
[root@web01 conf]# /application/nginx/sbin/nginx -s reload
3)访问测试
4.3 【概念】虚拟主机的概念和类型虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。
4.3.1 虚拟主机概念所谓虚拟主机,在Web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是ip或端口.具有独立的程序及资源目录,可以独立地对外提供服务供用户访问。
这个独立的站点在配置里是由一定格式的标签段标记的,对于Apache软件来说,一个虚拟主机的标签段通常被包含在以的此<VirtualHost></VirtualHost>,而Nginx软件则使用一个server{}标签来标示一个虚拟主机。一个Web服务里可以有多个虚拟主机标签对,即可以同时支持多个虚拟主机站点。
4.3.2 虚拟主机类型常见的虚拟主机类型有如下几种
1)基于域名的虚拟主机
所谓基于域名的虚拟主机,意思就是通过不同的域名区分不同的虚拟主机,基于域名的虚拟主机是企业应用最广的虚拟主机类型,几乎所有对外提供服务的网站使用的都是基于域名的虚拟主机,例如: 。
2)基于端口的虚拟主机
同理,所谓基于端口的虚拟主机,意思就是通过不同的端口来区分不同的虚拟主机,此类虚拟主机对应的企业应用主要为公司内部网站,例如:一些不希望直接对外提供用户访问的网站后台等,访问基于端口的虚拟主机,地址里要带有端口,例如::80
3)基于IP的虚拟主机
所谓基于IP的虚拟主机,意思是通过不同的IP区分不同的虚拟主机,
4.3.3 Nginx配置虚拟主机的步骤如下(适合各类虚拟主机类型)1)增加一个完整的server标签段到结尾处。注意,要放在http的结束大括号前,也就是将server标签段放入http标签。
2)更改server_name及对应网页的root根目录,如果需要其他参数,可以增加或修改。
3)创建Seever_name域名对应网页的根目录,并且建立测试文件,如果没有index首页,访问会出现403错误。
如果是apache软件,没有首页文件,默认会把站点目录下面的信息显示出来
nginx出403错误解决方式:
autoindex on;#<==当找不到首页文件时,会展示目录结构,这个功能一般不要用除非有需求。
PS:显示的目录结构中,有些信息点击就是下载,有的点击就是显示,因为扩展名称不一样
根本在于nginx软件是否能够进行解析
nginx是否解析:
1.htmljpg认识显示出内容
2.不认识不解析便直接下载
4)检査Nginx配置文件语法,平滑重启Nginx服务,快速检査启动结果。
5)在客户端对server_name处配置的域名做host解析或DNS配置,并检査(ping域名看返回的IP是否正确)。
6)在Win32浏览器中输入地址访问,或者在Linux客户端做hosts解析,用wget或curl接地址访问。
7)在服务重启或关闭之前先进行一次配置文件检查 /application/ngnix/sbin/nginx -t
Nginx虚拟主机的官方帮助网址为:
4.4 【实践】虚拟主机配置 4.4.1 基于域名的虚拟主机修改配置文件
[root@web01 ~]# cat /application/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name ;
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.etiantian.org;
location / {
root html/bbs;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name blog.etiantian.org;
location / {
root html/blog;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
检查配置信息是否正确
[root@web01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
重启服务
[root@web01 conf]# /application/nginx/sbin/nginx -s reload
注意:服务没有启动的时候不能使用平滑重启
创建站点目录
[root@web01 conf]# for name in www blog bbs ;do mkdir ../html/$name -p ;done
创建主页文件
[root@web01 conf]# for name in www blog bbs ;do echo "web01 name">../html/'> name">../html/ name/index.html ;done
检查主页内容信息
[root@web01 conf]# for name in www blog bbs ;do cat ../html/$name/index.html ;done
web01 www
web01 blog
web01 bbs
修改主机hosts文件
[root@web01 ~]# vim /etc/hosts
172.16.1.8 web01 blog.etiantian.org bbs.etiantian.org
测试
[root@web01 ~]# curl
web01 www
[root@web01 ~]# curl blog.etiantian.org
web01 blog
[root@web01 ~]# curl bbs.etiantian.org
web01 bbs
4.4.2 基于端口的虚拟主机修改配置文件内容
[root@web01 conf]# vim nginx.conf
server {
listen 81;
server_name bbs.etiantian.org;
location / {
root html/bbs;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
"nginx.conf" 46L, 1098C written
重启服务
[root@web01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
[root@web01 conf]# /application/nginx/sbin/nginx -s reload
检查端口信息
[root@web01 conf]# netstat -lntup |grep ng
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 40110/nginx
tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 40110/nginx
测试访问
[root@web01 ~]# curl bbs.etiantian.org:81
web01 bbs
4.4.3 基于IP的虚拟主机注意:
采用基于IP的虚拟主机,配置文件修改后要重启(-s stop)
配置和IP地址配置相关的都要采用(-s stop)重启,不能够使用软重启的方式
修改配置文件
[root@web01 conf]# cat nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 10.0.0.8:80;
server_name ;
location / {
root html/www;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
检查配置文件格式
[root@web01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
重启服务,注意使用的是直接重启的方式
只要nginx配置文件中涉及到IP地址的更改只能正真的重启才生效
[root@web01 conf]# /application/nginx/sbin/nginx -s stop
[root@web01 conf]# /application/nginx/sbin/nginx
[root@web01 conf]# netstat -lntup |grep ng
tcp 0 0 10.0.0.8:80 0.0.0.0:* LISTEN 40592/nginx
访问测试
4.5 【规范化配置】nginx配置文件企业规范化 4.5.1 第一个里程碑: 创建虚拟主机配置文件存储目录
[root@web01 conf]# pwd
/application/nginx/conf
[root@web01 conf]# mkdir extra
4.5.2 第二个里程碑: 生产虚拟主机配置文件
[root@web01 conf]# sed -n '10,21p' nginx.conf > extra/www.conf
[root@web01 conf]# sed -n '22,33p' nginx.conf > extra/bbs.conf
[root@web01 conf]# sed -n '34,45p' nginx.conf > extra/blog.conf
4.5.3 第三个里程碑: 修改nginx配置文件使之加载识别虚拟主机配置文件
[root@web01 conf]# cat nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/*;
}
4.5.4 重启服务
[root@web01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
4.5.5 检查监听端口
[root@web01 conf]# netstat -lntup |grep ng
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 40714/nginx
4.5.6 查看配置文件的加载顺序
[root@web01 logs]# /application/nginx/sbin/nginx -T
参数说明:
-T : test configuration, dump it and exit
测试配置文件,并且加载一遍,并显示加载的顺序
4.5.7 【优化】调整 inculde的加载顺序,指定第一个加载为conf
[root@web01 conf]# vim nginx.conf
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;
include extra/blog.conf;
}
4.5.8 重启服务
[root@web01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
[root@web01 conf]# /application/nginx/sbin/nginx -s reload
4.5.9 说明;这样的配置能够让用户通过IP访问的时候,访问到的网站是www的网站。
4.6 别名的配置在配置文件中添加别名
[root@web01 conf]# vim extra/www.conf
server {
listen 80;
server_name ett.org;
location / {
root html/www;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重启服务
[root@web01 conf]# /application/nginx/sbin/nginx -s reload
修改hosts 进行访问测试
[root@web01 www]# curl ett.org
web01 www
4.7 status 状态模块 4.7.1 状态模块的配置修改配置文件,添加三status模块
[root@web01 conf]# vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server{
listen 80;
server_name status.etiantian.org;
location / {
stub_status on;
access_log off;
}
}
include extra/www.conf;
include extra/bbs.conf;
include extra/blog.conf;
}
检查配置文件是否正确
[root@web01 conf]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
重启服务
[root@web01 conf]# /application/nginx/sbin/nginx -s reload
访问测试
说明:
以上页面内容信息主要会被zabbix监控服务调取,形成图像信息
根据图形信息,从而判断nginx网站服务用户访问量情况
4.7.2 状态模块说明参数
参数说明
Active connections
当前的活动客户端连接数量
accepts
接受客户端连接的总数
handled
处理的连接总数
requests
客户端请求的总数
Reading
nginx正在读请求头的当前连接数。
Writing
nginx正在将响应写回客户端的当前连接数。
Waiting
当前空闲客户端连接数等待一个请求。