为什么需要网关

通常后台提供了不同的应用服务,甚至是集群,每种服务每个服务,需要维护不同的请求地址,甚至服务认证、跨域等动作,管理起来比较麻烦。因此,需要一个网关,介于客户端和应用服务之间,所有的外部请求都会先经过网关,网关再把请求分发到目标服务。网关对外提供唯一请求入口,作为对外联系的窗口,易于管理和维护请求。

一、Nginx 概述

Nginx 不仅是一个高性能的Web服务器,还具备访问代理、负载均衡、内容缓存等功能,用于客户端访问流量到后台应用服务器负载均衡和请求转发。其基于模块化的代码架构及可与其它有效集成的可编程特性,使其具有强大的扩展能力。Nginx以资源消耗低、高稳定、高性能的并发处理能力著称。

1.1 Nginx 特性

访问代理: Nginx 可以通过访问路径、URL 关键字、客户端 IP等多种手段实现访问路由分配。

反向代理: 将接收到的请求再转到后端的目标应用服务器,并把响应数据返回给客户端。支持目前绝大多数的网络协议:HTTP/FastCGI/RPC/UDP/TCP等。

负载均衡: 通过自身的 upstream 模块支持多种负载均衡算法,使后端服务器可以非常方便地进行横向扩展,以应对高并发。

内容缓存: Nginx支持静态站点和后端分离,可以把静态内容缓存起来,也可以将后端变化不大的响应结果缓存起来,使整体实现了更高速的相应能力。

可扩展性: 可定制的模块化架构方式,更多的语言(C/Perl/JavaScript/Lua)支持开发第三方模块并引入,增强可编程及扩展能力。

1.2 Nginx 进程

首先,进程是CPU管理的运行单元,CPU的单个核心也可以运行多个进程,只不过是交替运行着各个进程,称为时间片,这种方式速度很快,以至于看上去像在同时运行;多核CPU就能同时运行更多的进程。

Nginx是由多个进程运行,一个主进程Master和多个子进程Worker,主进程负责管理子进程,如:重启/重载/创建/销毁等,子进程负责处理具体的请求等业务功能。进程间共享内存数据,更多的进程带来更好的处理能力。

Nginx 进程运行示意图:

1.3 Nginx 重载

Nginx支持配置信息的重载,并以最新的配置内容运行,当Nginx在高速运行的时候,如何做到平稳过渡呢?

相关命令:nginx -s reload

重载过程: Nginx Master process 负责 fork 出一个新的 Worker process,最新的Worker使用新的配置信息运行,这时候就销毁一个旧的worker,此时,Worker有新旧之分,新Worker用新配置运行,旧Worker依然用旧配置运行,Master继续fork出新的Worker。。。以同样的方式持续替换旧Worker,直到全部替换完成。整个过程中,Nginx 并没有停止运行,丝滑过渡。

二、安装配置

2.1 编译安装

安装前提:

yum install gcc -y # C语言编译器

yum install pcre pcre-devel -y # PCRE Library

yum install zlib zlib-devel -y # zlib Library

编译安装:

# 进入解压后的目录中 编译安装 [指定用户/组] [--with-追加自带模块名称]

./configure --prefix=/usr/local/nginx [--user=www --group=www] [--with-http_gzip_static_module]

make && make install

2.2 启动实例

进入主进程目录:/usr/local/nginx/bin

nginx # 启动

nginx -s stop # 停止,立即

nginx -s quit # 退出,处理完现有任务后

nginx -s reopen # 重启

nginx -s reload # 重载配置,交替更新工作进程

docker 运行 nginx 很简单:

拉取镜像:docker pull nginx 启动容器:docker run -d --name=ngx-a -p 80:80 nginx

浏览器打开主机IP显示 NGINX 欢迎页面。

影响 Nginx 的系统关联项

Firewall/UFW 防火墙:端口的开放 SELinux 权限的限制:请求后端的权限

2.3 配置文件结构

nginx 的配置文件默认存于 /etc/nginx/nginx.conf,其中通过 include 引入其它目录子配置文件。

全局块:针对 Nginx 实例的设置,资源及事件的设定。

HTTP:从 Client 到 Nginx 的请求设置,请求过程中要处理的各项配置;

Upstream:代理转发的下个目的地列表,后端服务组地址列表,连接与负载均衡的设定。

Server:从 Nginx 到 Service 的设置,通常对应前后端某种服务或组;限制设定,代理设定,错误机制等。

Location:路由匹配转发通讯,重定向等。

配置模板示例

###### 全局块

worker_processes auto; # 工作进程数

error_log /var/log/nginx/error.log notice; # 错误级别记录

events {

worker_connections 1024; # 单个工作进程,可承载的最大连接数

}

http {

###### MIME 配置

include /etc/nginx/mime.types; # 文件扩展名与文件类型映射表

default_type application/octet-stream; # mime.types 不包含时的默认设置

###### 请求日志配置

lo

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: