Nginx学习

岁酱吖の 提交于 2021-01-19 07:11:52

一、概述

      Linux提供稳定的系统资源分配和网络通信基础;

      Nginx负责对Web Request的解析和分发;

      Mysql负责对数据的持久化存储;

      程序代码负责提供对业务逻辑的实现;

 1、Nginx工作原理

       为了支持服务端的高并发,nginx采用进程+epoll的异步IO模型;

       Nginx运行时会有两类进程,master process和Worker process,两者的职责不同:

       A、Master process负责监听IO事件和对Worker process的管理调度;

       B、Worker process负责处理IO事件,每个Worker进程相互独立,一个Worker里面可能处理多个IO流(socket fd),linux内核通过epoll机制来支持epoll机制来支持Worker process异步处理多个IO流。

2、正向代理

       当需要访问国外的google的时候,但是google被GFW给限制访问叻。这个时候,就需要一台代理服务器,我们先把请求发送到代理服务器,由代理服务器代替我们去向google站点发送请求,并按原路返回请求结果,这就是正向代理。在这个正向代理模型中,代理服务器隔离了服务请求端和服务提供端的直接交互,请求端知道服务端是谁,但是服务端无法知道请求端是谁。

3、反向代理模型

      单台服务器无法支撑海量的并发请求,因此构建了一套服务器集群,集群中每台服务器都提供相同的服务,但如何有效地把请求分布到集群中具体的机器上呢?通过代理服务器,集群中每台服务器都有能力去提供服务,代理服务器制定请求转发的规则,负责把请求“均匀”地转分发到集群上的服务器,而这些服务器没有选择为哪一条请求服务的权利,只能被动接受代理服务器转发过来的请求并处理,然后再原路返回。

      在反向代理模型中,代理服务器隔离了请求端和服务端的直接交互,服务端知道请求是谁,但请求端无法感知具体提供服务的服务端机器。

      反向代理模型,可以有效地解决服务端负载均衡,避免某些服务器过载,提供整体服务的稳定性。

    4、Nginx常用命令

          nginx run 、stop、rerun;

          nginx -t

          nginx reload

二、Nginx配置管理——重点

      Nginx配置好,才可以帮我们把请求转发给CGI(Common Gateway Interface)程序;

      Nginx配置文件nginx.conf一般默认安装在/usr/local/etc/nginx/目录下;

      nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令。

     1、main部分设置的指令将影响其他所有部分的设置;

     2、server部分的指令主要用于指定虚拟主机域名、IP和端口;

     3、upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;

     4、location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)  ;

 他们之间的关系是:server继承main、location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。

     典型的Nginx配置文件nginx.conf的组成结构如下:

     # some main config, such as:

   # user www www;

    # worker_processes 2;  # 默认启动2个工作进程

    # event {

  #     use epoll;

  #     worker_connections  2048;

  # } # 使用epoll i/o复用

  # ...

   

http {

    # some http config ...

 

    upstream { } # 配置反向代理时需要

 

    server { # 配置virtual host

        location <path-pattern> { # 匹配URL

        }

    }

    server { # 可以同时配置多个server

 

    }

    # ...

 

 

三、总结

   整个的重点是nginx的配置,其中虚拟主机的配置(server)、资源管理配置(location)、以及资源访问重定向映射(rewrite)是难点。业务场景多种多样,但location和rewrite的规则却万变不离其宗。

   location提供了一种规则机制,帮助管理nginx服务器(集群)。在规则机制下,多条规则集合定义了服务的入口,通过优先级匹配选择算法递归地匹配查找出对应的location Block,来作为服务请求的处理策略。

    rewrite在location的规则机制下,撕开一条口子,给niginx的配置提供了selection execution之外的异常路径,使得一些特殊场景的配置变得简单高效。(类比一下C语言的goto)

     最重要的一条:所有的location Block在location block selection算法过程中,都不是独立的,有可能在每一次重定向的时候,都会重新对整个location blocks进行一次匹配。

    

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!