一、Nginx基本概念

1.1 什么是Nginx

  • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
  • Nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,如perl、php等,但是不支持java。java程序只能通过与tomcat配合完成。
  • Nginx专为性能优化而开发,性能是其最重要的考量,非常注重效率,能经受住高负载的考验,支持高达50000个并发连接数。

1.2 反向代理

1.2.1 正向代理

  • 在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问

1.2.2 反向代理

  • 用户将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器数据后,再返回给客户端,此时的反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP。

1.3 负载均衡

  • 客户端发送多个请求到服务器,服务器随后处理请求,有些请求可能要与数据库进行交互。服务器处理完毕后,再将结果返回给客户端。
  • 上述架构模式对于早期的系统相对单一,并发请求相对较少的情况下比较合适。但随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。
  • 负载均衡:基于集群的概念,增加服务器的数量,将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况,改为请求分发到多个服务器上,将负载分发到不同的服务器。

1.4 动静分离

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

二、Nginx的安装

2.1 使用远程连接工具连接Linux操作系统

  1. nginx相关依赖软件

2.2 按装pcre依赖

  • 命令:tar -zxvf pcre-8.37.tar.gz
  • 进入解压后的文件夹,输入命令:./configure
  • 安装命令:make && make install
  • 安装之后,检查版本号:pcre-config --version

2.3 安装其他依赖

  • 命令:yum -y install zlib zlib-devel gcc-c++ libtool openssl openssl-devel

2.4 安装Nginx

  • 将Nginx压缩包用xftp放在Linux系统中
  • 解压命令:tar -zxvf nginx-1.12.2.tar.gz
  • 进入解压后的文件夹,输入命令:./configure
  • 安装命令:make && make install
  • 安装成功后,usr会多出来一个文件夹local/nginx,在nginx下sbin文件夹包含有启动脚本

2.5 启动报错记录

  • error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or

  • 启动nginx后,无法ip请求访问

    • 将防火墙关闭:service iptables stop
    • centos6没有firewall命令,

      • centos7:

        • 添加端口:sudo firewall-cmd --add-port=80/tcp --permanent
        • 重启防火墙:firewall-cmd-reloead

三、Nginx操作的常用命令

  • 使用nginx操作命令的前提条件:必须进入nginx的目录:/usr/local/nginx/sbin

3.1 查看版本号

  • ./nginx -v

3.2 启动nginx

  • ./nginx

3.3 关闭nginx

  • ./nginx -s stop

3.4 重新nginx

  • ./nginx -s reload:将nginx.conf重新加载

四、Nginx的配置文件

4.1 nginx配置文件位置

  • 配置文件位置:/usr/local/nginx/conf/nginx.conf

4.2 nginx配置文件组成

  • 配置文件由三部分组成

4.2.1 全局块

  • 从配置文件开始到events块之间的内容,主要是设置一些影响Nginx服务器整体运行的配置指令。主要包括:

    • 配置运行Nginx服务器的用户(组)
    • 允许生成的work process数
    • 进程PID存放路径
    • 日志存放路径和类型
    • 配置文件的引入

  • work_process值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

4.2.2 events块

  • events块的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括:

    • 是否开启对多work_process下的网络连接进行序列化
    • 是否允许同时接收多个网络连接
    • 选取哪种时间驱动模型来处理连接请求
    • 每个work_process可以同时支持的最大连接数。

  • 每个work_process支持的最大连接数为1024
  • 这部分配置对nginx的性能影响较大,在实际中应该灵活配置

4.2.3 http块

  • http块是Nginx服务器配置中最频繁的部分,代理、缓存、日指定以等绝大多数功能和第三方模块的配置都在这里。包括:

    • http全局块
    • server块

4.2.3.1 http全局块

  • http全局块配置的指令包括:

    • 文件引入
    • MIME-TYPE定义
    • 日志自定义
    • 连接超时时间
    • 单链接请求数上限

4.2.3.2 server块

  • server块与虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机完成一样,该技术的产生是为了节省互联网服务器硬件成本。
  • 每个http块可以包括多个server块,而每个server块相当于一个虚拟主机。
  • 每个server块也分为全局server块,以及可以同时包含多个的location块。
全局server块
  • 最常见的配置时本虚拟机主机的监听配置和本虚拟机主机的名称或IP配置

location块
  • 一个server块可以配置多个location块
  • location块的作用时基于nginx服务器接收到的请求字符串(如 server_name/uri-string),对虚拟主机名称(IP别名也可)之外的字符串(如 前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存、应答控制等功能,还有许多第三方模块的配置也在这里进行。

Last modification:November 10th, 2019 at 03:12 pm