• nginx 2020年12月24日22:40:56



    期中集群架构-第八章-期中架构nginx章节
    ======================================================================

    01. web服务软件种类介绍
    常用来提供静态Web服务的软件有如下三种:
     Apache:
    这是中小型Web服务的主流,Web服务器中的老大哥。
     Nginx:
    大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。
    Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展。
     Lighttpd:
    这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高。
    在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身影。

    常用来提供动态服务的软件
     PHP(FastCGI):
    大中小型网站都会使用,动态网页语言PHP程序的解析容器。
    它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程模式,而是mod_php5.so(module)。
    也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。
     Tomcat:
    中小企业动态Web服务主流,互联网Java容器主流(如jsp、do)。
     Resin:
    大型动态Web服务主流,互联网Java容器主流(如jsp、do)。

    02. nginx软件服务介绍
    如果你听说或使用过Apache软件,那么很快就会熟悉Nginx软件,与Apache软件类似,
    Nginx(“engine x”)是一个开源的,支持高性能、高并发的WWW服务器和代理服务软件。
    它是由俄罗斯人lgor Sysoev开发的,最初被应用在俄罗斯的大型网站www.rambler.ru上。
    后来作者将源代码以类BSD许可证的形式开源出来供全球使用。
    Nginx可以运行在UNIX、Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中

    03. nginx软件特征介绍
    · 支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
     · 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB
     · 支持异步网络I/O事件模型epoll(Linux 2.6+) apache(select)

    04. nginx软件功能介绍
    1)作为Web服务软件(处理用户访问静态请求)
    2)反向代理或负载均衡服务
    3)前端业务数据缓存服务

    05. nginx软件模型特点说明
    apache与nginx软件对比说明???
    apache使用select模型
    nginx使用epoll模型
    举例说明:宿舍管理员
    select模型版管理员 会一个一个房间查询人员
    epoll模型版管理员 会进行检索后,直接找到需要找的人
    举例说明:幼儿园阿姨
    select模型版阿姨 会一个一个小朋友进行询问,确认哪个小朋友需要上厕所
    epoll模型版阿姨 会告知想上厕所小朋友自觉站到响应位置

    06. nginx软件编译安装
    第一个里程:软件依赖包安装
    pcre-devel: perl语言正则表达式兼容软件包
    openssl-devel:使系统支持https方式访问
    yum install -y pcre-devel openssl-devel

    第二个里程:创建一个管理nginx进程的虚拟用户
    useradd www -s /sbin/nologin/ -M

    第三个里程:下载并解压nginx软件
    cd /server/tools
    wget http://nginx.org/download/nginx-1.12.2.tar.gz
    tar xf nginx-1.12.2.tar.gz

    第四个里程:进行软件编译安装
    软件编译安装三部曲:
    ①. 编译配置
    ./configure --prefix=/application/nginx-12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module
    --prefix=PATH 指定软件安装在什么目录下
    --user=USER 指定软件worker进程管理用户,利用www虚拟用户管理worker进程
    --group=USER
    --with-http_ssl_module 使nginx程序可以支持HTTPsF访问功能
    --with-http_stub_status_module 用于监控用户访问nginx服务情况
    ②. 编译过程
    ③. 编译安装

    第五个里程:为nginx程序软件创建链接目录
    ln -s /application/nginx-12.2 /application/nginx

    第六个里程:启动nginx程序服务
    /application/nginx/sbin/nginx

    07. nginx软件程序目录结构
    conf --- nginx程序所有配置文件保存目录
    nginx.conf nginx程序主配置文件
    精简nginx.conf配置文件内容:
    grep -Ev "#|^$" nginx.conf.default >nginx.conf

    nginx配置文件组成:
    ①. main nginx主区块
    ②. event nginx事件区块
    ③. http nginx http功能区块
    ④. server nginx 网站主机区块
    ⑤. location nginx 匹配或者定位区块

    html --- nginx程序站点目录
    logs --- nginx程序日志文件保存目录
    sbin --- nginx程序命令所在目录
    nginx命令参数说明:
    -V --- 查看nginx软件编译配置参数
    -t --- 检查nginx配置文件语法格式是否正确
    -s --- 用于管理nginx服务运行状态
    stop 停止nginx服务
    reload 平滑重启nginx服务器
    重启nginx服务
    nginx -s stop 先停止
    nginx 再启动

    08. 编写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.etiantian.org;
    location / {
    root html/www;
    index index.html index.htm;
    }
    }
    }

    实现编写多个网站页面==编写多个虚拟主机(等于一个网站)
    第一个里程编写配置文件:
    server {
    listen 80;
    server_name www.etiantian.org;
    location / {
    root html/www;
    index index.html index.htm;
    }
    }
    server {
    listen 80;
    server_name bbs.etiantian.org;
    location / {
    root html/bbs;
    index index.html index.htm;
    }
    }
    server {
    listen 80;
    server_name blog.etiantian.org;
    location / {
    root html/blog;
    index index.html index.htm;
    }
    }

    第二个里程创建站点目录:
    mkdir -p /application/nginx/html/{www,bbs,blog}

    第三个里程创建站点目录下首页文件:
    for name in www bbs blog;do echo "10.0.0.7 $name.etiantian.org" >/application/nginx/html/$name/index.html;done
    for name in www bbs blog;do cat /application/nginx/html/$name/index.html;done
    10.0.0.7 www.etiantian.org
    10.0.0.7 bbs.etiantian.org
    10.0.0.7 blog.etiantian.org

    第四个里程:进行访问测试
    浏览器访问测试:
    注意:需要编写windows主机hosts文件,进行解析
    命令行访问测试:
    利用curl命令在linux系统中访问测试
    注意:需要编写linux主机hosts文件,进行解析

    虚拟主机配置文件编写方法:
    ①. 基于域名的虚拟主机配置方法(最常用)
    ②. 基于端口的虚拟主机配置方法
    说明:当你访问的网站域名在虚拟主机配置中不存在时,默认会将第一个虚拟主机的配置页面响应给用户
    ③. 基于IP地址的虚拟主机配置方法
    说明:nginx服务中只要涉及IP地址的修改,都需要重启nginx服务,而不能采用平滑重启

    09 Nginx服务日志信息
    错误日志 访问日志
    01. 错误日志
    Syntax: error_log file [level];
    Default:
    error_log logs/error.log error;
    Context: main, http, mail, stream, server, location
    #error_log logs/error.log;
    #error_log logs/error.log notice;
    #error_log logs/error.log info;

    vim nginx.conf
    error_log /tmp/error.log error;

    补充说明:
    ===========================================================================================
    错误日志的,默认情况下不指定也没有关系,因为nginx很少有错误日志记录的。
    但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题。
    error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit
    该级别在日志名后边定义格式如下:
    error_log /your/path/error.log crit;

    crit 记录的日志最少,而debug记录的日志最多。
    如果nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,
    那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富
    ===========================================================================================


    02. 访问日志(重点关注)
    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 logs/access.log main; --- 调用定义格式信息,生成访问日志
    $remote_addr 10.0.0.1 --- 访问客户端的源地址信息
    $remote_user - --- 访问客户端认证用户信息 ???
    [$time_local] --- 显示访问时间
    $request GET / HTTP/1.1 --- 请求行信息
    $status 304 --- 状态码信息(304状态码利用缓存显示页面信息)
    $body_bytes_sent --- 服务端响应客户端的数据大小信息
    $http_referer --- 记录链接到网站的域名信息 ???
    $http_user_agent --- 用户访问网站客户端软件标识信息
    用户利用客户端浏览器测试访问时,win10默认浏览器会有异常问
    $http_x_forwarded_for --- ??? 反向代理
    官方链接:http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log


    03. 日志要进行切割
    01. 利用shell脚本实现日志切割
    [root@web01 scripts]# vim cut_log.sh
    #!/bin/bash

    data_info=$(date +%F-%H:%M)

    mv /application/nginx/logs/www_access.log /application/nginx/logs/access.log.$data_info
    /application/nginx/sbin/nginx -s reload

    # cut nginx log cron
    * */6 * * * /bin/sh /server/scripts/cut_log.sh &>/dev/null

  • 相关阅读:
    rocketmq的linux搭建环境
    linux调用本地shell脚本
    第二课
    第一课
    有意思的dos攻击
    信息收集
    url跳转挖掘
    Drozer之android_app分析实战
    缓存中毒
    随便写写
  • 原文地址:https://www.cnblogs.com/ch2020/p/14186767.html
Copyright © 2020-2023  润新知