文章目录
- 前言
- 一、nginx简介
-
- 1. 什么是 nginx 和可以做什么事情
- 2.Nginx 作为 web 服务器
- 3. 正向代理
- 4. 反向代理
- 5. 负载均衡
- 6.动静分离
- 二、Nginx 的安装(Linux:centos为例)
-
- 1. 准备工作
- 2. 开始安装
- 3. 运行nginx
- 4. 防火墙问题
- 三、 Nginx 的常用命令和配置文件
-
- 1. Nginx常用命令
-
- a. 使用nginx操作命令前提
- b. 查看 nginx 的版本号
- c. 启动 nginx
- d. 关闭nginx
- e. 重新加载 nginx
- 2. Nginx配置文件
-
- a. 配置文件位置
- b. nginx 的组成部分
-
- 第一部分:全局块
- 第二部分:events块
- 第三部分:
- 四、 Nginx 反向代理 配置实例 1.1
-
- 1. 实现效果
- 2. 准备工作
- 3. 访问过程的分析
- 4、具体配置
-
- a. 第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置
- 2. 第二步 在 nginx 进行请求转发的配置(反向代理配置)
- 5、最终测试
- 五、 Nginx 反向代理 配置实例 1.2
-
- 1. 实现效果
- 2. 准备工作
-
- a. 第一步,两个tomcat端口和测试页面
- b. 第二步,修改 nginx 的配置文件
- 六、 Nginx 负载均衡 配置实例 2
-
- 1. 实现效果
- 2. 准备工作
-
- a.准备两台 tomcat 服务器
- b. 修改一处
- c. 测试页面
- 3. 在 nginx 的配置文件中进行负载均衡的配置
- 4. 最终测试
- 4. nginx 分配服务器策略
-
- a. 轮询(默认)
- b. weight
- c. ip_hash
- d. fair(第三方)
- 七、 Nginx 动静分离 配置实例 3
-
- 1. 什么是动静分离
- 2. 准备工作
- 3. 具体配置
-
- a. 在 nginx 配置文件中进行配置
- 4. 最终测试
-
- a. 测试 image
- b. 测试 www
- 八、 Nginx 的高可用集群
-
- 1. 什么是nginx 高可用
- 2. 配置高可用的准备工作
- 2. 在两台服务器安装keepalived
-
- a)安装:
- b) 配置文件
- 完成高可用配置(主从配置)
-
- a) 修改 keepalived.conf 配置文件
- b) 添加检测脚本
- c) 开启nginx 和 keepalived
- 4. 最终测试
-
- a)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50
- b)把主服务器(192.168.17.129)nginx 和 keepalived 停止,再输入 192.168.17.50
- 九、 Nginx 的原理
-
- 1. mater 和 worker
- 2. master-workers 的机制的好处
- 3. 设置多少个 worker
- 4. 连接数 worker_connection
前言
- 强烈建议:看完这篇实操之后,在看理论篇:nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇,两篇结合学习,希望能够带给大家一些有用的点。
一、nginx简介
1. 什么是 nginx 和可以做什么事情
-
Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
-
其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
2.Nginx 作为 web 服务器
- Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发, 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数。
https://lnmp.org/nginx.html
3. 正向代理
Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
- 简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理。
- 需要在客户端配置代理服务器进行指定网站访问
4. 反向代理
- 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
- 我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
5. 负载均衡
-
增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负 载均衡
-
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端。
这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成 本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂 度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易 造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情 况呢/p>
我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能 满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量 是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能 够满足需求的。那么怎么办呢面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题 的办法行不通了,那么横向增加服务器的数量呢时候集群的概念产生了,单个服务器解 决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 所说的负载均衡
6.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速 度。降低原来单个服务器的压力。
- nginx的http模块使用pcre来解析正则表达式,需要在linux上安装库
- nginx使用zlib对http包的内容进行gzip,需要在linux上安装安装库
- 安装库,让 nginx 支持 https(即在ssl协议上传输http)
2. 开始安装
- 都有两种方式,一种直接下载,第二种使用解压包方式。这里大多使用解压包方式。
- 我的安装路径:/usr/feng/
- Mac系统安装请移步到这儿(和Linux安装并无多大区别):Mac os 安装 nginx 教程(success)
-
安装pcre
方式一、。
方拾二、上传源码压缩包,解压、编译、安装 三部曲。
1)、解压文件, 进入pcre目录,
2)、./configure 完成后,
3)、执行命令: make && make install -
安装 openssl
下载OpenSSL的地址:
http://distfiles.macports.org/openssl/
1)、解压文件, 回到 openssl目录下,
2)、./configure 完成后,
3)、执行命令: make && make install -
安装 zlib
1)、解压文件, 回到 zlib 目录下,
2)、./configure 完成后,
3)、执行命令: make && make install - **安装 nginx **
1)、解压文件, 回到 nginx 目录下,
2)、./configure 完成后,
3)、执行命令: make && make install
3. 运行nginx
- 安装完nginx后,会在 路径 下自动生成 文件夹。这是自动生成的。
- 进入这个目录:
目录内容如下:
已经启动。
如下
4. 防火墙问题
在 windows 系统中访问 linux 中 nginx,默认不能访问的,因为防火墙问题 (1)关闭防火墙 (2)开放访问的端口号,80 端口
查看开放的端口号
设置开放的端口号
重启防火墙
三、 Nginx 的常用命令和配置文件
1. Nginx常用命令
a. 使用nginx操作命令前提
使用nginx操作命令前提:必须进入到nginx的自动生成目录的下/sbin文件夹下。
nginx有两个目录:
第一个:安装目录,我放在:
第二个:自动生成目录:
b. 查看 nginx 的版本号
d. 关闭nginx
b. nginx 的组成部分
配置文件中有很多#, 开头的表示注释内容,我们去掉所有以 # 开头的段落,精简之后的 内容如下:
- nginx 配置文件有三部分组成
第一部分:全局块
从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。
比如上面第一行配置的:
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是 会受到硬件、软件等设备的制约。
第二部分:events块
比如上面的配置:
events 块涉及的指令**主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否 允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。**
上述例子就表示每个 work process 支持的最大连接数为 1024.
这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
第三部分:
这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是:http 块也可以包括 http全局块、server 块。
-
http全局块
http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。 -
server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了 节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
-
全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。 -
location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。 地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
四、 Nginx 反向代理 配置实例 1.1
1. 实现效果
- 打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页 面中
2. 准备工作
(1)在 liunx 系统安装 tomcat,使用默认端口 8080,我这里8080被其他应用占用,所以我已修改端口为8081。在conf目录下的server.xml配置文件中,如下,将port改为 8081,其实下面也有类似的Connector 标签,但是要看protocol协议为HTTP/1.1的标签修改即可。
- tomcat 安装文件放到 liunx 系统中,解压。
Tomcat的路径:/usr/feng/apach-tomcat/tomcat8081下 - 进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器。
(2)对外开放访问的端口 (我这里不需要)
- firewall-cmd –add-port=8080/tcp –permanent
- firewall-cmd –reload
- 查看已经开放的端口号 firewall-cmd –list-all
(3)在 windows 系统中通过浏览器访问 tomcat 服务器
别忘了开启tomcat,在bin目录下,使用 命令:
4、具体配置
a. 第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置
2. 第二步 在 nginx 进行请求转发的配置(反向代理配置)
五、 Nginx 反向代理 配置实例 1.2
1. 实现效果
实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
nginx 监听端口为 8001,
访问 http://127.0.0.1:8001/edu/ 直接跳转到 127.0.0.1:8081
访问 http://127.0.0.1:8001/vod/ 直接跳转到 127.0.0.1:8082
2. 准备工作
a. 第一步,两个tomcat端口和测试页面
- 准备两个 tomcat,一个 8081 端口,一个 8082 端口。
在**/usr/feng/apach-tomcat/下 新建tomcat8081和tomcat8082两个文件夹,将 Tomcat安装包 分别上传到两个文件夹,进行解压缩安装,8081的Tomcat只改一个http协议默认端口号** 就行,直接启动即可。
这里需要改8082的端口号,需要修改三个端口,只修改一个端口号的话,是启动不了的,我已经测试过了(如果只修改http协议默认端口的话,8081和8082只会启动一个)。因为默认的都是8080(没有的直接创建文件夹,好多都是刚建的,与上面的第一个示例示例有点改动)
-
tomcat8081 解压包,然后进入到 /bin 下 ,使用命令 ./startup 启动
-
tomcat8082
使用命令 编辑 文件 :/conf/server.xml 文件
vim server.xml
修改后如下:
1、修改server 的默认端口,由默认8005->8091
3、修改默认ajp协议的默认端口,由默认的8009->9001
- 并准备好测试的页面
写一个a.html页面,
tomcat8081的tomcat,放到目录 /webapp/vod 下,内容:
来源:java冯坚持
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!