zoukankan      html  css  js  c++  java
  • Nginx:综合架构网站服务 -- 3 -- nginx模块功能介绍

    综合架构网站服务-- nginx模块功能介绍

    代码总览:

    nginx -t 		-- 检查语法
    curl -Lv www.moox.com 	-- 跟踪显示详细信息
    

    00. 内容说明:

    1. nginx服务一些常见应用 (模块功能)
    2. 网站页面目录索引 -- autoindex
    3. 网站页面字符修改 -- charset
    4. 网站页面别名功能 -- server_name
    5. 网站状态信息页面 -- status
    6. 网站服务日志文件 -- 错误日志 -- error.log
    7. 网站服务日志文件 -- 访问日志 -- access.log
    8. 网站服务匹配功能 -- location
    9. 网站实现跳转功能 -- rewrite
    10. 总结回顾

    01. 上文回顾:

    nginx网站搭建配置及访问 https://www.cnblogs.com/moox/p/12726926.html

    1. 利用nginx搭建单个网站
    2. 利用nginx搭建多个网站
      尽量每一个网站有单独的虚拟主机配置文件
      每一个网站有独立的站点目录
    3. 利用nginx配置安全控制
      根据用户访问的域名地址 www.moox.com/Av access模块(deny,allow) --403
      根据用户访问进行认证 认证模块 (hppasswd)
    4. 网站服务访问方式
      基于域名访问
      基于地址访问

    02. nginx的企业实践应用

    1) 利用nginx服务搭建网站文件共享服务器

    网站页面目录索引

    nginx模块功能: ngx_http_autoindex_module -- autoindex指令
    编写配置文件(www.conf)
    /etc/nginx/mime.types媒体资源类型文件作用

    ## 用法:
    Syntax:	autoindex on | off;
    Default:	
    autoindex off;
    Context:	http, server, location
    
    ## 配置/etc/nginx/conf.d/www.conf
    server {
    	listen        80;
    	server_name   www.oldboy.com;
    	location / {
    		root  /html/www;
    		# index默认使用index.html,只删除此处的index.html是没用的
    		#index index.html index.htm;  
    		auth_basic      "oldboy-sz-01";
    		auth_basic_user_file password/htpasswd;
    		autoindex on;    --- 开启nginx站点目录索引功能
    	}
    }
    systemctl reload nginx
    mv index.html index.html.bak
    mkdir CentOS{6.7,6.8,6.9,7.0}
    for id in {6.7,6.8,6.9,7.0};do echo this is a CentOS $id version. can not be download.> CentOS$id/version.txt;done;
    for id in {6.7,6.8,6.9,7.0};do echo this is a CentOS $id version. can be download.> CentOS$id/version.php;done;
    
    ## PS:1.需要将首页文件进行删除
    	配置文件/etc/nginx/conf.d/www.conf 
    	和站点目录/html/www中的index.html都要删除
    

    访问测试:
    浏览器输入 www.moox.html 既可看到效果

    ../
    CentOS6.7/
    CentOS6.8/
    CentOS6.9/
    CentOS7.0/ 
    ----------------------------
    ../
    version.php  -- 点击时自动下载文件
    version.txt  -- 点击时显示文件内容
    ## PS 2. /etc/nginx/mime.types媒体资源类型文件作用
    	文件中有的(如txt)扩展名信息资源,   进行访问时会直接看到数据信息
    	文件中没有的(如php)扩展名信息资源, 进行访问时会直接下载资源
    [root@web01 nginx]# grep -E "php|txt" mime.types 
        text/plain                                       txt;
    ## 可修改/etc/nginx/mime.types使php成为可查看,但不建议,有坑
        text/plain                                       txt php; 
    
    网站页面字符修改

    网站页面目录数据,中文出现乱码,如何解决:

    location / {
    	root  /html/www;
    	#index index.html;
    	auth_basic      "oldboy-sz-01";
    	auth_basic_user_file password/htpasswd;
    	autoindex on;
    	charset utf-8;   --- 修改目录结构中出现的中文乱码问题
    }
    

    2) 利用nginx服务搭配置文件别名功能

    网站页面别名功能

    第一个历程: 编写配置文件

    /etc/nginx/conf.d/www.conf

    server_name www.moox.com moox2020.com;
    systemctl reloadn nginx

    第二个历程: 配置好解析信息

    Windows 中hosts文件增加moox.com 解析

    10.0.0.7 www.moox.com blog.moox.com bbs.moox.com moox2020.com

    作用:

    1. 编写网站访问测试 -- 使用短的域名方便测试
    2. 定位要访问的网站服务器 -- 多台服务器时不同的域名方便定位

    3) 利用nginx状态模块功能对网站进行监控

    状态模块: ngx_http_stub_status_module
    location = /basic_status {
    stub_status;
    }

    第一个历程: 编写配置文件
    [root@web01 conf.d]# vim status.conf
    server {
    listen 80;
    server_name status.moox.com;
    stub_status;
    }

    第二个历程: 重启nginx服务,并且编写解析文件
    systemctl reload nginx
    10.0.0.7 status.moox.com

    网站状态页面信息

    第三个历程:网站监控测试,浏览器输入 status.moox.com,显示

    Active connections: 1 
    server accepts handled requests
     		  70     70      97 
    Reading: 0 Writing: 1 Waiting: 0 
    

    显示的内容也可以在Linux中提取

    ## 增加域名解析
    [root@web01 conf.d]# cat /etc/hosts
    ...
    172.16.1.7      status.moox.com
    ...
    ## curl 访问
    [root@web01 conf.d]# curl status.moox.com
    Active connections: 1 
    server accepts handled requests
     74 74 137 
    Reading: 0 Writing: 1 Waiting: 0
    

    解释:
    Active connections: 激活的连接数信息 可设置4000用户,阈值3500
    accepts: 接收的连接数汇总(综合) TCP连接
    handled: 处理的连接数汇总(综合) TCP连接
    requests: 总计的请求数量 HTTP协议请求
    Reading: nginx服务读取请求报文的数量 100人点餐
    Writing: nginx服务响应报文信息数量 100人响应
    Waiting: nginx队列机制,要处理(读取或者响应保存进行保存) 主要监控项

    4) nginx日志功能配置

    错误日志: /var/log/nginx/error.log --- Core functionality
    访问日志: /var/log/nginx/access.log ngx_http_log_module

    nginx日志目录/var/log/nginx 中存在日至自动打包切割是因为有日志轮训文件

    [root@web01 nginx]# ll /var/log/nginx
    total 52
    -rw-r----- 1 www   adm 24583 Apr 18 22:15 access.log
    -rw-r----- 1 nginx adm   687 Apr 17 10:09 access.log-20200417.gz
    -rw-r----- 1 www   adm  5429 Apr 18 15:23 access.log-20200418
    -rw-r----- 1 www   adm  1233 Apr 18 21:38 error.log
    -rw-r----- 1 nginx adm   726 Apr 17 10:08 error.log-20200417.gz
    -rw-r----- 1 www   adm  2721 Apr 18 15:23 error.log-20200418
    [root@web01 nginx]# ll /etc/logrotate.d/nginx 
    -rw-r--r-- 1 root root 351 Aug 13  2019 /etc/logrotate.d/nginx
    
    网站服务日志文件 -- 错误日志
    • 错误日志: /var/log/nginx/error.log --- Core functionality
      Syntax: error_log file [level]; 指定错误日志路径以及错误日志记录的级别level
      Default: error_log logs/error.log error;
      Context: main, http, mail, stream, server, location

      /etc/nginx/nginx.conf中指定错误级别

      [root@web01 nginx]# cat /etc/nginx/nginx.conf
      user  www;
      worker_processes  1;
      error_log  /var/log/nginx/error.log warn; --- 指定错误级别及默认路径
      pid        /var/run/nginx.pid;
      

      错误级别:

      debug	:调试级别, 服务运行的状态信息和错误信息详细显示     信息越多
      info	:信息级别, 只显示重要的运行信息和错误信息
      notice	:通知级别: 更加重要的信息进行通知说明
      warn	:警告级别: 可能出现了一些错误信息,但不影响服务运行
      error	:错误级别: 服务运行已经出现了错误,需要进行纠正      推荐选择
      crit	:严重级别: 必须进行修改调整
      alert	:严重警告级别: 即警告,而且必须进行错误修改
      emerg	:灾难级别: 服务已经不能正常运行                      信息越少
      
    网站服务日志文件 -- 访问日志
    • 默认访问日志: /var/log/nginx/access.log ngx_http_log_module
    [root@web01 nginx]# cat /etc/nginx/nginx.conf
    ## 默认访问日志部分
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' ##定义日志内容格式
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;                              ##调用日志格式
    
    $remote_addr   			显示用户访问源IP地址信息
    $remote_user            显示认证的用户名信息
    [$time_local]           显示访问网站时间
    "$request"              请求报文的请求行信息
    $status                 用户访问网站状态码信息
    $body_bytes_sent        显示响应的数据尺寸信息
    $http_referer           记录调用网站资源的连接地址信息(防止用户盗链)                    
                            老男孩nginx---access.log---莫文杰(荒原饮露---老男孩图片链接)---http_referer(链接)
    $http_user_agent        记录用户使用什么客户端软件进行访问页面的  (谷歌 火狐 IE 安卓 iphone)
    $http_x_forwarded_for   ??? 负载均衡
    
    
    • 自定义网站访问日志
    ## 根据自己的网站自定义访问日志,如只统计www的访问日志
    [root@web01 nginx]# cat conf.d/www.conf 
    server{
        listen	80;
        server_name www.moox.com moox2020.com;
        access_log  /var/log/nginx/www_access.log  main;  ## 定义访问日志
        location /{
            root  /html/www;
            #index index.html index.htm;
    	auth_basic "please input passwd";
            auth_basic_user_file password/htpasswd; 
            autoindex on;
            charset utf-8;
        }
        location /AV {
            deny 10.0.0.0/24;
            allow 172.16.1.0/24;
    	#root  /html/www;
            #index index.html index.htm;
        }
    }
    
    ### 重启nginx服务
    [root@web01 nginx]# systemctl reload nginx
    # 浏览器访问 www.moox.com, 查看www.access.log的变化
    [root@web01 nginx]# tail -f /var/log/nginx/www.accesslog
    10.0.0.1 - oldboy [19/Apr/2020:15:23:27 +0800] "GET /CentOS6.7/ HTTP/1.1" 
    200 399 "http://moox2020.com/" 
    "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36" "-"
    ## 对应关系---------------------------------------------------------------------------
    '$remote_addr - $remote_user [$time_local] "$request" ' 
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    
    • PS: 日志文件信息需要做切割处理 几个G

    5) nginx服务location作用说明

    网站服务优雅显示功能 -- location

    模块说明: ngx_http_core_module
    location进行匹配(uri)
    错误页面优雅显示

    • 错误页面优雅显示
    location /oldboy {
    	root /html/www;
    	error_page  404  /moox.jpg; -- 当访问页面出现404时,显示站点目录下的moox.jpg
    }
    location /oldgirl {
    	root /html/www;
    	error_page  404  /oldgirl.jpg;
    }
    ## 效果测试
    [root@web01 www]# cd /html/www
    [root@web01 www]# ll
    drwxr-xr-x 2 root root    22 Apr 19 16:29 moox
    -rw-r--r-- 1 root root 12062 Apr 19 16:26 moox.jpg
    [root@web01 moox]# mkdir /html/www/moox
    [root@web01 moox]# cd /html/www/moox
    [root@web01 moox]# ll
    -rw-r--r-- 1 root root 777835 Apr 19 16:23 test.jpg
    
    ## 浏览器访问 www.moox.com/moox/test.jpg -- 正常
    ## 浏览器访问 www.moox.com/moox/test22222.jpg -- 由于没有test22222.jpg,发生404错误,优雅显示指定内容:/html/www/moox.jpg
    
    网站服务匹配功能 -- location

    location详细配置:

    ## 语法
    Syntax:	location [ = | ~ | ~* | ^~ ] uri { ... }
    location @name { ... }
    Default:	—
    Context:	server, location
    ## 配置方法:
    location = / {              --- 精确匹配    优先级01 最高 
    	[ configuration A ] 	 
    }
    location / {                --- 默认匹配    优先级04 最低
    	[ configuration B ]
    }
    location /documents/ {      --- 按照目录进行匹配    优先级03
    	[ configuration C ]
    }
    location ^~ /images/ {      --- 优先匹配/不识别uri信息中符号信息       优先级02
    	[ configuration D ]
    }
    location ~* .(gif|jpg|jpeg)$ {  --- 不区分大小写进行匹配  优先级03
    	[ configuration E ]
    }
    ## 实例配置
    vim /etc/nginx/conf.d/test_location.conf
    [root@web01 conf.d]# cat /etc/nginx/conf.d/test_location.conf
    server{
    	listen		80;
    	server_name test.moox.com;
    	location = / { ## 浏览器访问	test.moox.com
    		return 404;
    	}
    	location / {   ## 浏览器访问	test.moox.com/mm
    		return 403;
    	}
    	location /documents/ {  ## 浏览器访问	test.moox.com/documents/
    		return 501;
    	}
    	location ^~ /images/ {  ## 浏览器访问	test.moox.com/images/
    		return 502;
    	}
    	location ~* .(gif|jpg|jpeg)$ {   ## 浏览器访问	test.moox.com/xx.gif
    		return 500;
    	}
    }
    ## 测试效果:
    1.Windows hosts解析:10.0.0.7 www.moox.com  test.moox.com
    2.浏览器访问	test.moox.com
    

    6) 利用nginx实现页面跳转功能

    网站实现跳转功能 -- rewrite

    利用rewrite模块是跳转功能: http_rewrite_module
    实现 curl moox.com 跳转到 www.moox.com 的功能

    • 语法解释
    Syntax:	rewrite regex replacement [flag];   rewite  匹配的正则信息  替换成什么信息
    Default:	—
    Context:	server, location, if
    	
    rewrite www.oldboy.com/(.*) http://www.oldboy.com/$1 permanent;   重写规则配置
    		^/(.*)								      $1 指代前半部分的(.*)
    baidu.com/oldboy.html跳转到ww.baidu.com/oldboy.html    跳转方式
    
    
    • 跳转方式:
      永久跳转: permanent 301 客户端将跳转信息进行缓存,再次访问时直接在客户端跳转
      临时跳转: redirect 302 客户端不会缓存跳转信息,再次访问时还是在服务端进行跳转

    • 出现无限跳转如何解决:

    由于永久跳转时,客户端会缓存服务端跳转地址,
    当服务端地址发生改变时,客户访问的地址不会跟着变化,
    解决办法:1.需要客户端进行清除缓存 2.服务端处理

    ## 第一种方法: 利用不同server区块配置打破循环,单独的server
    server {
       server_name  oldboy.com;
       rewrite ^/(.*) http://www.moox.com/$1 permanent;
    }
    ## 第二种方法: 利用if判断实现打破循环,放在server或location中,不使用单独的server
    if ($host ~* "^moox.com$") {
      rewrite ^/(.*) http://www.moox.com/$1 permanent;
    }
    
    www.oldboy.com/oldboy01/oldboy02/oldboy.jpg   --- www.oldboy.com/oldboy.jpg
    

    03.扩展练习:

    1. 利用命令取出状态页面信息中的数值
    2. 搭建LNMP环境 数据库服务/php服务
  • 相关阅读:
    【认证】Apache Shiro对象概念
    【Java基础】char
    【Http】keepalive
    【Nginx】Nginx处理请求过程
    【CSS】块级元素和行内元素
    未A,或用水法,或不熟的题
    2017初二上期中考试总结
    动态规划中的单调队列优化_补充
    NOIP2017普及组翻车记
    对拍模板
  • 原文地址:https://www.cnblogs.com/moox/p/12732892.html
Copyright © 2011-2022 走看看