Nginx前端基础

310 阅读5分钟

Nginx

是什么?

Nginx 是一个高性能的 HTTP 和反向代理服务器

为什么用?

  1. 占用内存少,并发能力强。
  2. Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率
  3. 安全

怎么用

常用命令
  • 启动 Nginx

    • /usr/sbin/nginx
    • nginx
  • 停止 Nginx

    • nginx -s stop
  • 查看 Nginx 进程

    • ps -ef|grep nginx
  • 平滑启动 nginx

    • nginx -s reload
    • kill -HUP cat /var/run/nginx.pid
  • 强制停止 nginx

    • pkill -9 nginx
  • 检查对 nginx.conf 文件的修改是否正确

    • nginx -t -c /etc/nginx/nginx.conf
    • nginx -t
  • 查看 nginx 的版本信息

    • nginx -v
配置文件(nginx.conf)
  • main 配置段:全局配置段。其中 main 配置段中可能包含 event 配置段;

    • 用于调试、定位问题的配置参数:
      • daemon {on|off}; //是否已守护进程运行进程 nginx,调试时应设置为 off
      • master_process {on|off}; //是否以 master/worker 模型来运行 nginx,调试时可以设置为 off
      • error_log 位置 1 级别 2; //配置错误日志(位置与级别有以下选项,点击脚注)
    • 正常运行必备的配置参数
      • worker_processse N; //启动 N 个 worker 进程,这里的 N 为了避免上下文切换,通常设置为 cpu 总核数-1 或等于总 t 核数
      • worker_cpu_affinity CPUMASK3 [CPUMASK…]; //将进程绑定到某个 CPU 中,避免频繁刷新缓存
      • time_resolution INTERVAL; //计时器解析度。降低此值,可减少 gettimeofday()系统调用的次数
      • worker_priority NUMBER; //指明 worker 进程的 NICE 值(优先级)
    • 事件相关配置
  • event{}:定义 event 模型工作特性;

    • use epoll; //多路复用 I/O 中的一种方式,仅用于 linux2.6 以上内核,大大提升 nginx 性能
    • accept_mutex {on|off}; //master 调度用户请求至各 worker 进程时使用的负载均衡锁,“on”表示能让多 个 worker 轮流地、序列化地去响应新请求
    • lock_file FILE; //accept_nutex 用到的互斥锁锁文件路径
    • use [epoll | rtsig | select | poll]; //指明使用的事件模型,建议让 nginx 自行选择
    • worker_connections #; //每个进程能够接受的最大连接数
    • multi_accept on; //尽可能多的接受请求
  • http{}:定义 http 协议相关配置。

    • server{}:定义一个虚拟主机
    • location 区段,通过指定模式来与客户端请求的 URI 相匹配
      • 功能:允许根据用户请求的 URI 来匹配定义的各 location,匹配到时,此请求将被响应的 location 配置快中的配置所处理,例如做访问控制等功能
      • location [修饰符] =abc {…}
        • 修饰符
          1. = 精确匹配
          2. ~ 正则表达式模式匹配,区分大小写
          3. ~* 正则表达式模式匹配,不区分大小写
          4. ^~ 前缀匹配,类似于无修饰符的行为,也是以指定模块开始,不同的是,如果模式匹配,那么就停止搜索其他模式了,不支持正则表达式
          5. @ 定义命名 location 区段,这些区段客户端不能访问,只可以有内部产生的请求访问,如 try_files 或 error_page 等
          6. asd/asdas
        • rewrite 适用于文件存放路径或者名字被修改后进行重写(rewrite REGEX REPLACEMENT FLAG;)
          • REPLACEMENT 可以是某个路径
          • FLAG
            • last -- 基本上都用这个 FLAG,表示当前的匹配结束,继续下一个匹配,最多匹配 10 到 20 个,一旦此 rewrite 规则重写完成后,就不会再被后面的其他 rewrite 规则进行处理,而是由 UserAgent 重新对重写后的 URL 再一次发起请求,并从头开始执行类似的过程
            • break -- 中止 Rewrite,不在继续匹配,一旦此 rewrite 规则重写完成后,有 useragent 对新的 URL 重新发起请求,且不会再被当前 location 内的任何 rewrite 规则所检查
            • redirect -- 已临时重定向的 http 状态 302 返回新的 URL
            • permanent -- 以永久从定向的 http 状态 301 返回新的 URl
          • 标识符 REGEX
            • ^ 必须以^后的实体开头
            • 必须以 必须以前的实体开头
            • . 匹配任意字符
            • [] 匹配指定字符集内的任意字符
            • [^] 匹配任何不包括在指定字符集内的任意字符串
            • | 匹配 | 之前或之后的实体
          • () 分组,组成一组用于匹配的实体,通常会有 | 来协助
    http {            ## 协议级别
    include mime.types;
    default_type application/octet-stream;
    keepalive_timeout 65;
    gzip on;
    sendfile on;		##指定nginx是否调用sendfile函数(zero copy)来输出文件,对于普通应用必须设为on;
    					##如果用来进行下载等应用磁盘I/O重负载应用,可设置为OFF,以平衡磁盘与网络I/O处理速度,降低系统的uptime
    autoindex on;		##开启目录列表访问,适合下载服务器,默认关闭
    	upstream {              ##负载均衡配置
    	...
    	}
    	 server {              ##服务器级别,每一个server类似于httpd中的一个<VirtualHost,通俗来说就是一个网站>
    		listen  8080;
       	server_name localhost;  ##后面可以跟多个主机,名称可以用正则表达式或通配符
    
        ##多个server时,匹配顺序如下:
            ##1.先做精确匹配检查;
            ##2.左侧通配符匹配检查,如*.idfsoft.com
            ##3.右侧通配符匹配检查,如mail.*
            ##4.正则表达式匹配检查,如~ ^.*\.idfsoft\.com$
            ##5.default_server
    		location / {           ##请求级别,类似与httpd中的<Location>,用于定义URL与本地文件系统的映射关系
    		 	root html;
    		 	index index.html index.htm;
          allow  192.168.91.129/32; ##设定允许那台或那些主机访问,多个参数间用空格隔开
          deny   all; ##设定禁止那台或那些主机访问,多个参数间用空格隔开
    	 	}
    	}
    }
    
负载均衡、动静分离、反向代理、正向代理

负载均衡: 增加服务器的数量,构建集群,将请求分发到各个服务器上,将原来请求集中到单个服务器的情况改为请求分发到多个服务器

反向代理:客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。

正向代理:局域网中的电脑用户想要直接访问网络是不可行的,只能通过代理服务器来访问,这种代理服务就被称为正向代理。

动静分离:为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析的速度,降低由单个服务器的压力。