Nginx搭建文件共享服务器、别名、stub_status监控、日志、location、301/302重定向功能

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

nginx模块功能:ngx_http_autoindex_module(autoindex on

vim www.conf

server {
  listen 80;
  server_name www.baidu.com;
  location / {
    root /html/www;
    #index index.html;
    autoindex on;  #开启nginx站点目录索引功能
  }
}
  • index文件注释了没用 需要删除index.html文件或者重命名index.html让他找不到

  • mime.types 媒体资源类型文件作用

    grep jpg /etc/nginx/mime.types
    
    • 文件中有的扩展名信息资源,进行访问时会直接看到数据信息
    • 文件中没有的扩展名信息资源,进行访问时会直接下载资源
网站页面目录数据中文乱码解决办法:charset
vim www.conf

server {
  listen 80;
  server_name www.baidu.com;
  location / {
    root /html/www;
    #index index.html;
    autoindex on;  #开启nginx站点目录索引功能
    charset utf-8; #修改目录结构中出现的中文乱码问题
  }
}
利用nginx服务配置文件别名功能
  • 第一个历程:编写配置文件

    server_name www.oldboy.com old.com
    
    #old.com就是别名
    
  • 第二个历程:配置好解析信息

    vim /etc/hosts
    10.0.0.7 www.oldboy.com old.com
    
  • 作用

    • 编写网站访问测试
    • 定位要访问的网站服务器(集群中访问具体的一台)
利用nginx状态模块功能对网站进行监控
  • 编写配置文件

    vim state.conf
    
    server {
      listen 998;
      server_name baidu.com;
      stub_status;
    }
    
  • 访问网址

    Active connections: 2 
    server accepts handled requests
     58 58 102 
    Reading: 0 Writing: 1 Waiting: 1
    
    信息 解释
    Active connections 激活的连接数信息(有多少用户正在访问)
    accepts 发送的连接数汇总(综合)(TCP)
    重启服务可清0
    handled 处理的连接数汇总(综合)(TCP)
    requests 总计的请求数量(HTTP)(一个TCP可发送多个HTTP)
    如果要设置为短连接,将配置文件中的keepalive_timeout 设为0
    Reading nginx服务器读取请求报文的数量
    Writing nginx服务器响应报文信息数量
    Waiting nginx队列机制,要处理(读取或响应报文进行保存) 监控
nginx日志功能配置

日志切割:/etc/logrotate.d/nginx

  • 访问日志(/var/log/nginx/access.log)

    server {
        log_format ‘...‘
    							 '...'
        access_log  /www/wwwlogs/access.log;
    }
    
    • log_format:定义日志内容格式(只能放在http中)

    • access_log:调用日志格式(可以放在server里,不在location里面,可以做多个页面的日志)

      参数 解释
      $remote_addr 显示用户访问源ip地址信息
      $remote_user 显示认证的用户名信息
      $time_local 访问网站的时间
      $request 请求报文的请求行信息
      $status 用户访问网站状态码信息
      $body_bytes_sent 显示响应的数据尺寸信息(统计流量)
      $http_referer 记录调用网站资源的连接地址信息(可以防止用户盗链,当流量使用过多时进行检查)
      $http_user_agent 记录用户使用什么客户端进行访问页面的
      $http_x_forwadrded_for 负载均衡
    • 日志格式 是指记录哪些选项

      默认的日志格式: main
      
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
      
      '$status $body_bytes_sent "$http_referer" '
      
      '"$http_user_agent" "$http_x_forwarded_for"';
      
      如默认的main日志格式,记录这么几项
      
      远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息
      
      http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP
      
      http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP
      
      2: 声明一个独特的log_format并命名
      
      log_format  mylog '$remote_addr- "$request" '
      
      '$status $body_bytes_sent "$http_referer" '
      
      '"$http_user_agent" "$http_x_forwarded_for"';
      
      在下面的server/location,我们就可以引用 mylog
      
      在server段中,这样来声明
      
      Nginx允许针对不同的server做不同的Log ,(有的web服务器不支持,如lighttp)
      
      access_log logs/access_8080.log mylog;
      
      声明log   log位置          log格式;
      
      
  • 错误日志(/var/log/nginx/error.log)

    • 编辑配置文件

      errror_log /var/log/nginx/error.log error
      
    • 错误级别(从上到下依次级别越高,设置越低信息越多。推荐设置error)

      级别 解释
      debug 调试级别,服务运行的状态信息和错误信息详细显示
      info 信息级别:只显示重要的运行信息和错误信息
      notice 通知级别:更加重要的信息进行通知说明
      warn 警告级别:可能出现了一些错误信息,但不影响服务运行
      error 错误级别:服务运行已经出现了错误,需要进行纠正
      crit 严重级别:必须进行修改调整
      alert 严重警告级别:即警告,而且不修进行错误修改
      emerg 灾难级别:服务已经不能正常运行
  • PS:日志文件信息需要做切割处理

nginx服务location作用说明

所属模块:ngx_http_core_module

location进行匹配(url)

  • 错误页面优雅显示:

    location / {
      root /html/www;
      error_page 404 oldboy.jpg;
    }
    
    #oldboy.jpg要在/html/www里
    
  • 精确匹配(优先级最高01)

    location = / {
    	return 404;  #返回状态码
    }
    
  • 默认匹配(其他的都没匹配到的话,匹配的就是这个,优先级最低)

    location / {
    	return 403;
    }
    
  • 按照目录进行匹配(优先级03)

    location /documents {
    	return 501;
    }
    
  • 优先匹配(优先级02),不是别uri信息中符号信息,不需要转义

    location ^~ /images {
    	return 502;
    }
    
  • 不区分大小写进行匹配(优先级03,匹配以三个为后缀的)

    location ~* \.(gif|jpg|jpeg)$ {
    	return 500;
    }
    
  • 区分大小写

    location ~ \.(gif|jpg|jpeg)$ {
    	return 500;
    }
    
利用nginx实现页面跳转功能

模块:http_rewrite_module

  • 使用方法:rewrite 匹配的正则信息 替换成什么信息

  • 进行配置

    server {
      listen 456;
      server_name linglong.fun;
      rewrite ^/(.*) http://linglong.fun/$1 permanent;
    }
    
  • 重写规则配置

    rewrite ^/(.*) http://linglong.fun/$1 permanent;
    
    ^/:url
    (.*):uri
    
    $0:url
    $1:uri
    
    • 永久跳转:permanent 301。会将跳转信息进行缓存
    • 临时跳转:redirect 302。不会缓存跳转信息
  • 出现无限跳转如何解决:

    • 利用不同server区块配置

      server {
        listen 80;
        server_name oldboy.com;
        rewrite ^/(.*) http://www.oldboy.com/$1 permanent;
      }
      server{
        listen 80;
        server_name www.oldboy.com;
        access_log /var/log/nginx/www_access/log main;
        location / {
          root /html/www;
          index index.html;
        }
      }
      
    • 利用if判断实现打破循环,只对oldboy.com进行跳转

      server{
        listen 80;
        server_name www.oldboy.com;
        if ($host ~* "^oldboy.com$"){
          rewrite ^/(.*) http://www.oldboy.com/$1 permanent;
        }
        access_log /var/log/nginx/www_access/log main;
        location / {
          root /html/www;
          index index.html;
        }
      }
      
直接跳转
server {
  listen 80;
  server_name oldboy.com;
  return 301 http://www.baidu.com;
}

猜你喜欢

转载自blog.csdn.net/s_frozen/article/details/128940403