Nginx的常用功能
1、规范nginx的配置文件
在企业中我们的虚拟主机可能会很多,配置文件的内容也会有很多,这时候我们就可以规范一下我们的配置文件,把每个虚拟主机按照网站的域名或者是功能取名,放到统一的文件夹中,当然我们的虚拟主机可能数量不是很多,那我们也可以把多个虚拟主机配置成一个单独的配置文件,只是和nginx.conf主配置文件分离,这样在架构上显的很规范,在我们配置或者是拍错的时候也会很明确很简单。
这里我们使用的参数是include,语法就是:
include file | mask;
它可以放在nginx配置中的任何位置,用法示例:
include mime.types; include brian.conf; # 单个文件 include vhosts/*.conf; # 包含vhosts目录下的所有conf后缀的文件
我们来对我们之前的nginx配置文件做个规范优化,nginx配置源文件:
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 www.brian.com; location / { root html/brian; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name www.brianzjz.com; location / { root html/brianzjz; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
把上面的配置文件按照虚拟主机来进行配置提取,新建一个统一的存储目录为www_date,把提取出来的内容存储到以:域名.conf 的文件中放到www_date的目录中
新建www_date目录:
[root@Nginx conf]# pwd /opt/nginx/conf [root@Nginx conf]# mkdir www_date
规范提取虚拟主机配置:(用sed按照行数来提取虚拟主机的配置文件)
[root@Nginx conf]# sed -n "10,21p" nginx.conf # 提取一个虚拟主机的配置文件,如果显示的不一样可以修改行数 server { listen 80; server_name www.brian.com; location / { root html/brian; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ==================================================================================================== [root@Nginx conf]# sed -n "22,34p" nginx.conf # 提取二个虚拟主机的配置文件,如果显示的不一样可以修改行数 server { listen 80; server_name www.brianzjz.com; location / { root html/brianzjz; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
使用下面的命令把提取出的配置放到我们指定的www_date目录中 文件名为 brian.conf brianzjz.conf
[root@Nginx conf]# sed -n "10,21p" nginx.conf > www_date/brian.conf # 第一个虚拟主机配置写到www_date下面的brian.conf文件中 [root@Nginx conf]# sed -n "22,34p" nginx.conf > www_date/brianzjz.conf # 第二个虚拟主机配置写到www_date下面的brianzjz.conf文件中 [root@Nginx conf]# cat www_date/brian.conf server { listen 80; server_name www.brian.com; location / { root html/brian; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } [root@Nginx conf]# cat www_date/brianzjz.conf server { listen 80; server_name www.brianzjz.com; location / { root html/brianzjz; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
删除主配置文件nginx.conf 中的所有虚拟主机的配置(server区块)我们可以按照行号来进行删除(提前看好行号)
[root@Nginx conf]# sed -i "10,34d" nginx.conf # 删除server区块文件 [root@Nginx 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方法导入到nginx.conf文件中(红色标记为插入内容)
[root@Nginx conf]# sed -i '10 i include www_date/brian.conf;\ninclude www_date/brianzjz.conf;' nginx.conf # 使用sed的方式把提取出的配置文件插入到nginx.conf中 [root@Nginx conf]# cat -n 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 include www_date/brian.conf; 11 include www_date/brianzjz.conf; 12 }
重新加载配置,并测试访问结果:
在重启nginx服务之前,我们要先对语法进行检测:
[root@Nginx conf]# ../sbin/nginx -t nginx: the configuration file /opt/nginx//conf/nginx.conf syntax is ok nginx: configuration file /opt/nginx//conf/nginx.conf test is successful
平滑重启nginx服务(reload方法,不中断业务)
[root@Nginx conf]# ../sbin/nginx -s reload
检查nginx的重新加载情况:
[root@Nginx conf]# netstat -lntup | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 23305/nginx: master [root@Nginx conf]# ps -ef | grep nginx root 23305 1 0 06:48 ? 00:00:00 nginx: master process /opt/nginx/sbin/nginx nginx 24379 23305 0 10:44 ? 00:00:00 nginx: worker process root 24383 23911 0 10:44 pts/2 00:00:00 grep --color=auto nginx [root@Nginx conf]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 23305 root 6u IPv4 47849 0t0 TCP *:http (LISTEN) nginx 24379 nginx 6u IPv4 47849 0t0 TCP *:http (LISTEN)
windows浏览器测试:
2、虚拟主机的别名配置
所谓的虚拟机别名,就是为虚拟主机设置除主域名之外的名字(一个或者多个),这样就可以实现用户访问多个域名对应同一个网站了
下面我们就修改一下,以 上面的www.brian.com为例:因为我们上面吧配置文件提取成单独的配置文件了,所谓下面看到的都是单独的配置文件进行修改的
源文件内容:
[root@Nginx www_date]# cat brian.conf server { listen 80; server_name www.brian.com; location / { root html/brian; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
修改后的文件:(红色标记修改文件)
[root@Nginx www_date]# vim brian.conf [root@Nginx www_date]# cat brian.conf server { listen 80; server_name www.brian.com brian.com; # 后面加上了brian.com 用空格隔开 location / { root html/brian; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
重新加载配置,并测试访问结果:
在重启nginx服务之前,我们要先对语法进行检测:
[root@Nginx www_date]# ../../sbin/nginx -t nginx: the configuration file /opt/nginx//conf/nginx.conf syntax is ok nginx: configuration file /opt/nginx//conf/nginx.conf test is successful
平滑重启nginx服务(reload方法,不中断业务)
[root@Nginx www_date]# ../../sbin/nginx -s reload
检查nginx的重新加载情况:
[root@Nginx www_date]# netstat -lntup | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 23305/nginx: master [root@Nginx www_date]# ps -ef | grep nginx root 23305 1 0 06:48 ? 00:00:00 nginx: master process /opt/nginx/sbin/nginx nginx 24379 23305 0 10:44 ? 00:00:00 nginx: worker process root 24383 23911 0 10:44 pts/2 00:00:00 grep --color=auto nginx [root@Nginx www_date]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 23305 root 6u IPv4 47849 0t0 TCP *:http (LISTEN) nginx 24379 nginx 6u IPv4 47849 0t0 TCP *:http (LISTEN)
windows浏览器测试:
3、nginx状态信息(主要对status模块进行讲解)
Nginx服务软件中有一个叫ngx_http_stub_status_module的模块,此模块的主要功能就是记录nginx的基本访问信息,让使用者了解nginx的工作状态,包括连接数等。。。。。在编译nginx的时候必须增加这个模块来支持
可以通过下面的命令,来查看是否编译的时候添加上了此模块:
[root@Nginx conf]# ../sbin/nginx -V # 命令 nginx version: nginx/1.6.3 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) TLS SNI support enabled configure arguments: --user=nginx --group=nginx --prefix=/opt/nginx/ --with-http_stub_status_module --with-http_ssl_module # 查看到时编译的时候添加上了
配置Nginx的status文件(这个文件也是个.conf结尾的文件,我们也是直接把这个文件放到我们之前建立好的www_date目录中)
[root@Nginx conf]# cat >>/opt/nginx/conf/www_date/status.conf<<EOF # 通过EOF的方式直接写入文件 > ### status > server { > listen 80; > server_name status.brian.com; # 域名 > location / { > stub_status on; # 打开状态信息开关 > access_log off; > } > } > EOF [root@Nginx conf]# cat /opt/nginx/conf/www_date/status.conf # 查看写入的文件 ### status server { listen 80; server_name status.brian.com; location / { stub_status on; access_log off; } }
在nginx.conf主配置文件中使用include导入这个文件
[root@Nginx conf]# sed -i '12 i include www_date/status.conf;' nginx.conf # sed 命令导入 [root@Nginx 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 www_date/brian.conf; include www_date/brianzjz.conf; include www_date/status.conf; # 所添加的内容 }
重新加载配置,并测试访问结果:
在重启nginx服务之前,我们要先对语法进行检测:
[root@Nginx conf]# ../sbin/nginx -t nginx: the configuration file /opt/nginx//conf/nginx.conf syntax is ok nginx: configuration file /opt/nginx//conf/nginx.conf test is successful
平滑重启nginx服务(reload方法,不中断业务)
[root@Nginx conf]# ../sbin/nginx -s reload
添加hosts文件:
windows添加hosts文件 路径:C:\Windows\System32\drivers\etc\hosts 打开上面路径的文件添加,下面内容 保存 192.168.1.108 status.brian.com
windows浏览器测试:
Active connections: 3 # 正在处理的活动链接数 server accepts handled requests # server表示:nginx启动到现在一共处理的连接 accepts表示:nginx启动到现在一共处理了多少次握手 handled requests表示:总共处理的连接数 3 3 144 Reading: 0 Writing: 1 Waiting: 2 # Reading表示:nginx读取到客户端的Header信息数 Writing表示:nginx返回给客户端的Header信息数 Waiting表示:nginx已经处理完正在等待下一个连接
温馨提示:为了安全这些信息要防止外部用户看到