- nginx 基本概念
- 是什么,做什么
- 反向代理
- 负载均衡
- 动静分离
- nginx 软件安装、命令、配置文件
- 在linux 系统安装nginx
- nginx 常用命令
- nginx配置文件
- nginx 配置实例
- 反向代理
- 负载均衡
- 动静分离
- 配置高可用集群,处理高并发
- 原理
简介概念
Nginx 是一个高性能的HTTP 和反向代理的Web服务器。特点:占用内存少,并发能力强。
nginx做为HTTP服务器,有以下几项基本特性:
- 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
- 无缓存的反向代理加速,简单的负载均衡和容错.
- FastCGI,简单的负载均衡和容错.
- 模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。
- 支持SSL 和 TLSSNI.
- Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。
Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。
反向代理
说反向代理,那就得先说说正向代理,nginx也是可以做正向代理提供上网功能的。
- 正向代理:如果把局域网Internet想象成一个巨大的资源库,则客户端要访问Internet,则需要通过代理服务器来访问,这种代理成为正向代理。
就是租房中介,比如我们要访问谷歌,需要翻墙,那可能要走香港的服务器或者国外,那这个服务器就是在做正向代理。
- 反向代理:
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率
就是二手房东可能是他弟弟,房东的弟弟与你交互租房事理,你以为他就是房东,其实真正的房东是他哥,但你并不知道。
- 区别:大概就是,正向你是知道你要访问目标服务器,但访问不到,自己配置国外服务器去访问,此时这个代理是你的代理,在帮你访问。而反向就是,你以为你访问的就是目标服务器,但他其实只是他的代理,你并不知道,这个代理是服务器的代理,掩藏真实的目标服务器,让你以为访问的就算目标服务器。
负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
应用场景:在当业务系统服务器无法支撑当前的业务量时,用户可以选择更高性能的服务器。但更为合理的做法是通过在既有业务服务器基础上,增量的方式增加相同功能的服务器,将计算任务分摊到后台多台较低配置的服务器处理,每台服务器都可以响应服务请求。实现合理安排客户请求并加快了请求相应速度,来提高用户体验。而用户仅感受到是一台高性能服务器在提供服务。
大概:客户端请求,到反向代理服务器,反向代理服务器通过一定算法平均分配给服务器集群的各个服务器。

动静分离
【转载】java前后端 动静分离,JavaWeb项目为什么我们要放弃jsp?
为了加快网站的解析速度,可以把动态页面也静态页面分配给不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。如下,也可以把静态资源直接放在nginx里

Nginx 的安装
他需要一些依赖,建议就这么按顺序装下来。
-
安装 pcre(Perl Compatible Regular Expressions) Perl库,包括 perl 兼容的正则表达式库
yum install -y pcre pcre-devel 安装 pcre-config --version 查看版本号
-
安装 zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip
yum install -y zlib zlib-devel
-
安装 OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上
yum install -y openssl openssl-devel
-
安装 Nginx,并解压
wget http://nginx.org/download/nginx-1.17.5.tar.gz tar -xzvf nginx-1.17.5.tar.gz
-
配置
-
进入解压文件目录
cd nginx-1.17.5
-
查看自己需要得配置,建议看看官网的参数说明根据你需要的情景使用配置
./configure --help
-
我们只设置安装目录,其他使用默认
./configure --prefix=/server/nginx 也就是说我们把nginx安装在/server/下了,默认是/usr/local/
-
出现这个证明配置成功
Configuration summary + using system PCRE library + OpenSSL library is not used + using system zlib library nginx path prefix: "/server/nginx" nginx binary file: "/server/nginx/sbin/nginx" nginx modules path: "/server/nginx/modules" nginx configuration prefix: "/server/nginx/conf" nginx configuration file: "/server/nginx/conf/nginx.conf" nginx pid file: "/server/nginx/logs/nginx.pid" nginx error log file: "/server/nginx/logs/error.log" nginx http access log file: "/server/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
-
-
编译和安装
make && make install 显示这个表示成功 cp conf/nginx.conf '/server/nginx/conf/nginx.conf.default' test -d '/server/nginx/logs' \ || mkdir -p '/server/nginx/logs' test -d '/server/nginx/logs' \ || mkdir -p '/server/nginx/logs' test -d '/server/nginx/html' \ || cp -R html '/server/nginx' test -d '/server/nginx/logs' \ || mkdir -p '/server/nginx/logs' make[1]: Leaving directory `/opt/nginx-1.17.5'
-
测试
cd /server/nginx/sbin //这个是配置安装包时候的目录 ./nginx //启动
-
访问前得开放防火墙
(1)、查看防火墙对外开放的端口
firewall-cmd --zone=public --list-ports
(2)、开启 web 端口
firewall-cmd --permanent --add-port=80/tcp
(3)、重启 firewall
firewall-cmd --reload
买的服务器的话,得创建一个80端口得安全组规则。
-
ip访问,http://ip 端口80可以不写,http默认80,显示如下成功。

常用命令
使用命令必须在nignx 的 /nginx/sbin 下才能使用
./nginx -v // 查看版本
./nginx // 启动
./nginx -s stop // 停止,直接停止
./nginx -s quit // 好好停止,处理完信息在停止,关闭服务
./nginx -s reload // 重新加载(修改配置文件后)
配置文件
在 /nginx/conf/nginx.conf
nginx 的配置文件由三部分组成:全局块、events 块、http 块。
- 全局块
从配置文件开始到 events 块之间的内容,主要设置一些影响 nginx 服务器整体运行的配置指令,只有包括配置运行 nginx 服务器的用户(组),允许生成的 worker process 数,进程 PID 存放路径、日志存放路径、类型以及配置文件的引入等
worker_processes 1;
这是 Nginx 服务器并发处理服务的关键配置,值越大,可以支持的并发处理量越多,但是会受到硬件、软件等设备的制约。
- events 块
events块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。
events { worker_connections 1024; }
表示每个 work process 支持的最大连接数为 1024。
这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
- 第三部分:http 块
这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。 http 块也可以包括 http全局块、server 块。
(1)、http 全局块
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、但链接请求数上线等。
(2)、server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。
①、全局 server 块:最常见的配置是本虚拟机主机的监听配置和本虚拟机主机的名称或 IP 配置。
②、location 块: 一个 server 块可以配置多个 location 块。这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如前面/uri_string)进行匹配,对待定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。