Nginx的入门级配置

初识Nginx

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx的特点是占用内存少,并发能力强.

Niginx转为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能够经受高负载的考验.

正向代理

用户在客户端中配置代理服务器,通过代理服务器间接访问某服务器,这个过程就是正向代理.

Nginx的入门级配置_第1张图片

反向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只
需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返
回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器
地址,隐藏了真实服务器 IP 地址。
Nginx的入门级配置_第2张图片

动静分离

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

Nginx的安装与使用

Nginx的安装

可以通过多种方法安装Nginx,不同操作系统安装的方法不同,在Manjaro中,可以直接使用pacman从仓库进行一键安装,命令是sudo pacman -S nginx.

在Nginx安装的主目录下,有一个nignx.conf是它的配置文件,在这个文件中,可以看到Niginx默认端口号是80,因此直接访问http://localhosr就可以访问到Nginx的主页.

Nginx的入门级配置_第3张图片

Nginx常用命令

以下说的命令是针对上述操作系统和上述安装方式安装Nginx

  • 查看版本号: nginx -v
  • 开启nginx: systemctl start nginx
  • 关闭nginx: systemctl stop nginx
  • 查看当前nginx进程: ps -ef | grep nginx

配置实例

首先了解以下nginx的配置文件nginx.conf

配置文件共分为三大块: 全局块 events块 http块

  • 全局块: 从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等.

  • events块: events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等.

  • http块: 这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里.http块之中又分为两块: http全局块 server块

    • http全局块: http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等.

    • server块: http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等.

      每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机.
      而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块.

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

配置反向代理

简单的反向代理

Nginx的入门级配置_第4张图片

在配置文件nginx.conf进行如下配置

Nginx的入门级配置_第5张图片

lcaotino中配置proxy_pass就可以配置目标服务器的url,当访问这个nginx时会跳转到目标服务器.

需要注意的是root需要删除或者注释,否则还是会进到原始的欢迎页面

复杂的反向代理

Nginx的入门级配置_第6张图片

配置文件进行如下配置:
Nginx的入门级配置_第7张图片

location后面可以跟uri的正则表达式,来判断应该访问哪一个服务器

表达式规则如下:

  1. = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配
    成功,就停止继续向下搜索并立即处理该请求。
  2. ~:用于表示 uri 包含正则表达式,并且区分大小写
  3. ~*:用于表示 uri 包含正则表达式,并且不区分大小写
  4. ^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字
    符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location
    块中的正则 uri 和请求字符串做匹配。

如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

配置负载均衡

配置如下
Nginx的入门级配置_第8张图片

upstream中可以选择多种负载均衡策略

  1. 轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

  2. weight: weight 代表权,重默认为 1,权重越高被分配的客户端越多
    Nginx的入门级配置_第9张图片

  3. ip_hash: 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
    Nginx的入门级配置_第10张图片

  4. fair(第三方): 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    Nginx的入门级配置_第11张图片

配置动静分离

动静分离就是当访问静态资源时跳转到纯粹存放静态资源的服务器中

配置如下
Nginx的入门级配置_第12张图片

autoindex设置是否显示目录结构,默认不显示

expires设置资源过期时间,浏览器会对访问的这个资源缓存,在设置的这段时间内,当再次访问这个资源时,浏览器会对比服务器中该资源修改时间是否发生过改变,如果没有改变,就不会重复从服务器下载这个资源,而是返回状态码304,给用户浏览器缓存的资源.如果发生改变,就重新下载,并返回状态码200.

Keepalived+Nginx高可用集群

高可用是指Nginx的高可用,当一个Nginx服务器宕机,另一个Nginx服务器会代替那个服务器继续工作.

Nginx的主从模式
Nginx的入门级配置_第13张图片

主从模式高可用集群的配置

  1. 所有服务器中都需要安装Nginx和Keepalived

  2. 修改/etc/keepalived/keepalivec.conf 配置文件

    global_defs {
    	notification_email {
            [email protected]
            [email protected]
            [email protected]
    	}
        notification_email_from [email protected]
        smtp_server 192.168.17.129
        smtp_connect_timeout 30
        router_id LVS_DEVEL
    }
    
    vrrp_script chk_http_port {
        script "/usr/local/src/nginx_check.sh"
       	interval 2 #(检测脚本执行的间隔)
        weight 2 # 权重
    }
    
    vrrp_instance VI_1 {
        state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
        interface ens33 //网卡
        virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
        priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
       		192.168.17.50 // VRRP H 虚拟地址
        }
    }
    
  3. /usr/local/src添加检测脚本

    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
       		killall keepalived
        fi
    fi
    
  4. 每个Nginx服务根据需求进行配置后,启动Keepalived和Nginx

主从式高可用的Nginx集群配置完成

初探Nginx原理

Nginx的入门级配置_第14张图片

一个Nginx中有一个Master(管理者)和多个Worker(工作者),当Nginx接收到任务时,Master会将任务分发给Worker执行.这里的任务分配采用争抢机制,出现任务时,每一个空闲的worker都会争抢这个任务,由优先争抢到的worker执行.

worker的数量是可以设置的.由于每一个worker会最大限度的使用CPU,因此worker的最合适的数量是服务器上CPU的数量.

你可能感兴趣的:(Nginx的入门级配置)