nginx实现反向代理、负载均衡与动静分离

主要知识点

  1. 反向代理
    首先是谈下正向代理:在用户访问局域网外的服务器时,并不是直接连接到服务器,而是要经过一个代理服务器,由代理服务器去访问你要的服务器。所以客户端要选择一个代理服务器。
    客户端不需要做任何配置,访问反向代理服务器。由反向代理服务器去选择目标服务器获取数据后,返回给客户端。此时方向代理服务器和目标服务器就是一个服务器。暴露的是代理服务器,隐藏了 目标服务器。

  2. 负载均衡
    增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

  3. 动静分离
    为了加快网络的解析速度,将动态请求和静态请求(html、image、css)由不同的服务器来解析,可以降低单个服务器的压力。
    可以理解为用nginx处理静态页面,用tomcat处理动态页面。

一、nginx是什么

​ Nginx* (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。报告表明能够支持高达 50,000 个并发连接数的响应。
​ Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
​ 2011年6月1日,nginx 1.0.4发布。

二、在linux系统中安装nginx

下载网址:http://nginx.org/en/download.html
在这里插入图片描述

需要的依赖:
pcre-8.37.tar.gz、openssl-1.0.1t.tar.gz、zlib-1.2.8.tar.gz

(1)安装pcre
​ 使用xftp将压缩文件传输到/usr/src
nginx实现反向代理、负载均衡与动静分离_第1张图片
tar -xvf pcre-8.37.tar.gz解压文件
​ 进入解压后的目录,执行./configure
​ 在当前文件下,使用make && make install
​ (可以使用pcre-config --version查看版本号)
nginx实现反向代理、负载均衡与动静分离_第2张图片

(2)使用yum安装zlib、openssl
sudo apt-get install make zlib zlib-devel gcc-c++ libtool openssl openssl-develyum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel`
nginx实现反向代理、负载均衡与动静分离_第3张图片

(3)安装nginx

​ 我们还是将这个安装到/usr/src中。过程与安装pcre一样。
​ 使用xftp将压缩文件传输到/usr/src。tar -xvf nginx-1.2.9.tar.gz解压文件。进入解压后的目录,执行./configure。在当前文件下,使用make && make install
​ 安装完成nginx后,可以在/usr/local中看到nginx文件夹。这个文件夹里面sbin有启动脚本
​ 我们可以去启动它。
8773

使用ps -ef | grep nginx查看是否已经启动(如果此时80端口被tomcat什么的占用的话,这里只能看到最后一条,可以用fuser -k 80/tcp杀死进程)
979

开启nginx后就可以去用服务器ip进入网页
nginx实现反向代理、负载均衡与动静分离_第4张图片
有可能你启动了nginx还是进不了网页。这里你需要把80端口开放。
查看开放的端口号
firewall-cmd --list-all
设置开放端口号
firewall-cmd -add-service=http -permanent
sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload

三、nginx常用命令

要进入到nginx的目录中才可以使用命令/usr/local/nginx/sbin
./nginx -v查看版本号
./nginx启动nginx
./nginx -s stop关闭nginx
./nginx -s reload重新加载nginx配置文件

四、nginx的配置文件

  1. 配置文件地址:/usr/local/nginx/conf/nginx.conf
  2. 配置文件的组成
    三个部分:全局块、event块、http块
    ①、全局块
    ​ 配置文件开始到event块中间的部分。该配置主要影响nginx的整体运行。
    nginx实现反向代理、负载均衡与动静分离_第5张图片
    其中的worker_processes 1;表nginx并发处理的值,值越大支持并发处理量越多。但是会受到硬件、软件等设备的约束。
    ②、event块
    ​ 影响nginx服务器与用户网络连接。
    比如:worker_connections 1024; 支持的最大连接数
    ③、http块
    ​ nginx服务器中配置最频繁的部分。http块有分为http全局快和server块。
    ​ 里面有个location。关于localtion的写法我们进行个说明nginx实现反向代理、负载均衡与动静分离_第6张图片
    ​ 1、=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
    ​ 2、~:用于表示uri包含正则表达式,并且区分大小写。
    ​ 3、~*:用于表示uri包含正则表达式,并且不区分大小写。
    ​ 4、 ^~ :用于不含正则表达式的uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location 后,立即使用此location 处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
    注意:如果uri包含正则表达式,则必须要有~或者^ * 标识。

五、实现反向代理

1、实现效果
(1)打开浏览器,在浏览器中输入地址www.baidu.com,可以跳转到我tomcat主页面中。
2、准备工作
(1)安装tomcat,使用默认端口号8080.420
​ 上传到/usr/src,并解压。
​ 准备启动,进入到解压目录的bin中/usr/src/apache-tomcat-7.0.105/bin,使用./startup.sh
(2)对外开放访问端口8080
设置开放端口号
firewall-cmd -add-service=http -permanent
sudo firewall-cmd --add-port=8080/tcp --permanent
重启防火墙
firewall-cmd --reload
(3)在浏览器中访问我们的tomcatnginx实现反向代理、负载均衡与动静分离_第7张图片

(4)实现步骤

  1. 在windows的host文件中,加入域名与ip对应关系。
    进入目录C:\Windows\System32\drivers\etc
    编辑hosts文件(ip写自己的)
    nginx实现反向代理、负载均衡与动静分离_第8张图片
    2. 浏览器查看(看不到这个界面的原因,你看看配置文件是不是写对了;再是你的是不是http请求)nginx实现反向代理、负载均衡与动静分离_第9张图片

    1. 更改nginx配置文件/usr/local/nginx/cong/nginx.conf
      在访问我们自己的ip时,会转到tomcat
      nginx实现反向代理、负载均衡与动静分离_第10张图片
    2. 启动nginx(如果已经启动,则重加载配置文件./nginx -s reload
    3. 浏览器访问
      nginx实现反向代理、负载均衡与动静分离_第11张图片

第二个实现
(1)实现效果
​ 使用nginx的反向代理,根据访问的路径跳转到不同的端口中。
​ 比如:监听9001
​ www.baidu.com:9001/vda/ >>> 127.0.0.1:8080
​ www.baidu.com:9001/edu/ >>> 127.0.0.1:8081
(2)准备工作
​ 两个tomcat服务器,一个是8080端口,一个是8081端口。

  1. 我们在/usr/src中,创建两文件夹tomcat8080、tomcat8081

  2. 解压apache-tomcat-7.0.105.tar.gz到两文件夹中

  3. 关闭原先的tomcat
    ps -ef | grep tomcat查看tomcat进程
    kill -9 26020 关闭进程(注意这个26020是查看的tomcat进程id)
    nginx实现反向代理、负载均衡与动静分离_第12张图片

  4. 启动tomcat
    注意8081端口的,要进入配置文件中更改端口。文件在/usr/src/tomcat8081/apache-tomcat-7.0.105/conf/server.xml。记得防火墙开放8081(说明下,阿里云的服务器你需要手动添加安全组,不然你在服务器中开放了端口也没有用)。02906586nginx实现反向代理、负载均衡与动静分离_第13张图片

  5. 创建文件夹和测试页面
    创建两个html文件,分别写入

    在8080

    在8081


    在两tomcat的webapp文件夹下分别创建vda、edu文件夹。
    把html文件分入对应的文件夹中
    nginx实现反向代理、负载均衡与动静分离_第14张图片
    nginx实现反向代理、负载均衡与动静分离_第15张图片

  6. nginx具体配置
    我们再加入一个server去监听9001端口,并且用正则表达式匹配/vda/与/edu/。后面就是重新启动nginx,或者nginx更新配置文件。
    nginx实现反向代理、负载均衡与动静分离_第16张图片

  7. 测试
    这里看到有乱码,这个是我创建文件时,字符集不是utf-8。
    还有就是我之前用的www.baidu.com这里我改成了www.123.com,因为hosts文件改成baidu后我查东西有点麻烦,所以该成了123。nginx实现反向代理、负载均衡与动静分离_第17张图片
    nginx实现反向代理、负载均衡与动静分离_第18张图片

六、实现负载均衡

一、简单实现
1、实现效果
​ 我们在浏览器中输入一个地址http://www.123.com/vda/a.html,平均分配到8080与8081中
2、准备工作
​ 2台tomcat服务器,一台8080,一台8081
​ 在两tomcat服务器webapp中都创建一个vda文件夹,并在里面创建a.html文件(一个写8080,一个写8081)
3、在nginx配置文件中进行配置nginx实现反向代理、负载均衡与动静分离_第19张图片
4、重启nginx或重新加载配置文件
5、测试
在不停刷新时,会更改对应的tomcatnginx实现反向代理、负载均衡与动静分离_第20张图片nginx实现反向代理、负载均衡与动静分离_第21张图片

二、分配策略

  1. 轮询(默认):每个请求按照时间顺序逐一分配到服务器中,如果服务器down掉了,能自动剔除。
  2. weight:权重。默认值为1,权重越高,被分配的客户端越多。
    nginx实现反向代理、负载均衡与动静分离_第22张图片
  3. ip_hash
    每个请求按访问ip的hash分配,这样每个访客固定访问一个服务器,可以解决session的问题。
    nginx实现反向代理、负载均衡与动静分离_第23张图片
  4. fair(第三方)
    按后端服务器响应时间来分配,相应时间段的优先分配。
    nginx实现反向代理、负载均衡与动静分离_第24张图片

七、实现动静分离

1、准备工作
​ 在linux系统准备一些静态资源。
​ 我们在/下创建一个data文件夹,下面再创建www、image文件夹。
​ www中放入一个html文件(内容随意),image中放入一个图片文件(随意)
2、具体配置
​ 在nginx的配置文件中nginx实现反向代理、负载均衡与动静分离_第25张图片
3、测试
nginx实现反向代理、负载均衡与动静分离_第26张图片
nginx实现反向代理、负载均衡与动静分离_第27张图片
列出访问目录
nginx实现反向代理、负载均衡与动静分离_第28张图片

你可能感兴趣的:(服务器,nginx,运维,linux,apache,服务器)