nginx初探,下载安装配置负载均衡
2018-08-10 11:14:43来源:博客园 阅读 ()
上一篇我讲了正向代理和反向代理的概念,这个是为nginx做准备的前置技能,网上百度nginx可以知道nginx是什么:
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
nginx是个web服务器,反向代理服务器,电子邮件(IMAP/POP3)代理服务器,并发能力强。一般来讲,tomcat最大并发在500,并且就很卡了,而nginx可以轻松实现10W+的并发。这就是我们为什么要用nginx的原因。
好,了解了nginx是什么,为什么要用他,下面我们就来实际操作一下:
下载安装
下载地址:http://nginx.org/en/download.html
下载最新版nginx:
解压后可直接运行
或者使用cmd命令行进行启动,
启动:start nginx
关闭:nginx.exe –s stop 或 nginx.exe –s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
热部署/重新载入Nginx:nginx.exe -s reload
服务器访问:localhost:80 à http://localhost/
出现如下所示即成功:
配置服务
Nginx安装ok后,下面我们来使他work,代理我们的服务。
比如我们原有一个叫girl的项目:ng路径下我们打印一下请求的一些信息
这里我们可以看到我们的tomcat启动的端口是8087;
然后我们在nginx的配置文件里进行配置:
首先路径是:
打开此配置文件:其他的配置信息我们先不需要关心,我们现在先初步学习,nginx的基础配置,让他可以代理我们的tomcat应用:
首先是server也就是nginx对外提供的服务,
服务监听配置中的listen ,就是nginx的监听端口,
Location下的proxy_pass需要和上流代理配置的 girl对应,代表我们所请求的
http://girl 都会被转发到上流代理配置的 localhost:8087 路径去
在上流代理配置中,我们加一个server localhost:8087,这代表一会我们将会代理的端口,也就是请求会转发到哪里。
至此,基本配置完成,我们来试一下,
Nginx访问路径:
Tomc访问:
可以看到,我们访问nginx的80端口的访问已经转发到了8087,应为我们可以看到和访问8087一样的结果页面了。
我们使用nginx的目的是进行代理分发,是做负载均衡的,所以想展示nginx的功能我们需要多个应用,这里我们在搭建一个简单的web应用在8080端口,其页面如下:
这样我们就有2个页面了:
分别是:http://localhost:8080/girl/ng/
和 http://localhost:8087/girl/ng
然后我们需要在nginx的配置文件中加:
Nginx支持热加载我们重新载入一下配置:
Nginx.exe –s reload
然后我们访问页面:
在刷新一下:
可以看到效果了:localhost/girl/ng/ 路径访问会有不同的应答,这就是nginx将我们的请求转发到不同的服务器上了。这就是nginx的负载均衡的实现。
由于每次的请求分发到了不同的服务器上,但是我们的登陆信息也就是session只保存在一台服务器上,这就会造成一个session丢失的现象,针对这样的情况,我们有3中策略去解决:
- 粘性session
Nginx自身提供的分发策略,即在代理转发的地址上方加:ip_hash,这样一个ip的请求只会转发到一台tomcat上(缺点:弱化了nginx的负载均衡的能力,一旦某个web服务器重启或宕机相对应的session会全部丢失。优点:实现简单,无额外开销,对应用无侵入性)
- 服务器session复制
在支持session复制的web服务器上,通过配置可以实现session同步到其他服务器上,达到每个web服务器上保存一致的session(优点:对应用无侵入性,web服务器重启或宕机不会造成session的丢失。缺点:占用网络资源,需要依赖支持的web服务器,会导致延迟)
具体实现方式:web应用的web.xml里加<distributable />
Web服务器的server.xml的配置文件中加:
3. Session共享机制
利用缓存技术,集中管理所有的session,所有的web服务器从存储介质中拿session,实现session共享。(优点:可靠性高,web服务器资源开销小,服务器重启或宕机不会造成session丢失。缺点:实现复杂,配置多,增加一次网络开销。)
实现:利用redis管理session,内部实现是使用filter进行拦截到redis中进行session的查询。这里涉及到redis相关技术就不展开讲了。
下载安装
1. 下载地址:http://nginx.org/en/download.html
下载最新版nginx:
2. 解压后可直接运行
或者使用cmd命令行进行启动,
启动:start nginx
关闭:nginx.exe –s stop 或 nginx.exe –s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
热部署/重新载入Nginx:nginx.exe -s reload
服务器访问:localhost:80 à http://localhost/
出现如下所示即成功:
配置服务
Nginx安装ok后,下面我们来使他work,代理我们的服务。
比如我们原有一个叫girl的项目:ng路径下我们打印一下请求的一些信息
这里我们可以看到我们的tomcat启动的端口是8087;
然后我们在nginx的配置文件里进行配置:
首先路径是:
打开此配置文件:其他的配置信息我们先不需要关心,我们现在先初步学习,nginx的基础配置,让他可以代理我们的tomcat应用:
首先是server也就是nginx对外提供的服务,
服务监听配置中的listen ,就是nginx的监听端口,
Location下的proxy_pass需要和上流代理配置的 girl对应,代表我们所请求的
http://girl 都会被转发到上流代理配置的 localhost:8087 路径去
在上流代理配置中,我们加一个server localhost:8087,这代表一会我们将会代理的端口,也就是请求会转发到哪里。
至此,基本配置完成,我们来试一下,
Nginx访问路径:
Tomc访问:
可以看到,我们访问nginx的80端口的访问已经转发到了8087,应为我们可以看到和访问8087一样的结果页面了。
我们使用nginx的目的是进行代理分发,是做负载均衡的,所以想展示nginx的功能我们需要多个应用,这里我们在搭建一个简单的web应用在8080端口,其页面如下:
这样我们就有2个页面了:
分别是:http://localhost:8080/girl/ng/
和 http://localhost:8087/girl/ng
然后我们需要在nginx的配置文件中加:
Nginx支持热加载我们重新载入一下配置:
Nginx.exe –s reload
然后我们访问页面:
在刷新一下:
可以看到效果了:localhost/girl/ng/ 路径访问会有不同的应答,这就是nginx将我们的请求转发到不同的服务器上了。这就是nginx的负载均衡的实现。
由于每次的请求分发到了不同的服务器上,但是我们的登陆信息也就是session只保存在一台服务器上,这就会造成一个session丢失的现象,针对这样的情况,我们有3中策略去解决:
1. 粘性session
Nginx自身提供的分发策略,即在代理转发的地址上方加:ip_hash,这样一个ip的请求只会转发到一台tomcat上(缺点:弱化了nginx的负载均衡的能力,一旦某个web服务器重启或宕机相对应的session会全部丢失。优点:实现简单,无额外开销,对应用无侵入性)
2. 服务器session复制
在支持session复制的web服务器上,通过配置可以实现session同步到其他服务器上,达到每个web服务器上保存一致的session(优点:对应用无侵入性,web服务器重启或宕机不会造成session的丢失。缺点:占用网络资源,需要依赖支持的web服务器,会导致延迟)
具体实现方式:web应用的web.xml里加<distributable />
Web服务器的server.xml的配置文件中加:
3. Session共享机制
利用缓存技术,集中管理所有的session,所有的web服务器从存储介质中拿session,实现session共享。(优点:可靠性高,web服务器资源开销小,服务器重启或宕机不会造成session丢失。缺点:实现复杂,配置多,增加一次网络开销。)
实现:利用redis管理session,内部实现是使用filter进行拦截到redis中进行session的查询。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- jdk各个版本下载 2020-06-11
- Maven安装与配置 2020-06-09
- java环境教程:Tomcat下载,安装,设置为Windows服务,启动 2020-06-09
- 解决IDEA Maven下载依赖包速度慢问题 2020-06-05
- Java电子书高清PDF集合免费下载 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash