1. Nginx简介
公司产品出现瓶颈?
我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发情况下,一个jar包启动应用就够了,然后内部的tomcat返回内容给用户。
但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。
于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。
我们希望这个代理服务器可以帮我们接收用户的请求(客户只向代理服务器发送请求),然后将用户的请求按照规则帮我们转发到不同的服务器节点之上(代理服务器将请求分发到各服务器)。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能不同的权重选择(服务器配置不同,多将请求转到服务器性能高的上面)。保证最佳体验,所以我们使用了Nginx。
什么是Nginx?
Nginx(engine X)是一个高性能的Http和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔.赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日,2011年6月1日,nginx1.0.4发布。
其特点是占用内存少,并发能力强,事实上nginx的并发能力在同类型的网站服务器中表示较好,中国大陆使用nginx网站用户有:百度,京东,新浪,网易,腾讯,淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
nginx是一个安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bug非常少的服务。nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。还能够不间断服务的情况下进行软件版本的升级。
nginx代码完全用c语言写,官方数据测试表明能够支持高达50,000个并发连接数的响应。
2. 正向代理和反向代理
Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
正向代理:
客户端设置代理服务器,再去访问其他服务器,说白了,还是客户端直接访问外部服务器。
客户端的代理服务器(正向代理)。
反向代理:
访问百度,域名只有一个,永远访问同一个域名,但是后面访问了哪个服务器。
服务器端的代理服务器(反向代理)。
3. 负载均衡
Nginx提供的负载均衡策略有2种:>内置策略和扩展策略。
内置策略为轮询,加权轮询,Ip hash。
扩展策略那就天马行空了,只有你想不到的,没有他做不到的。
轮询:
加权轮询:
Iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求发给同一台服务器进行处理,可以解决session不共享的问题。
设置某些IP只能访问某台服务器,这样也不是很好。(了解即可)
4. 动静分离
在我们的软件开发中,有些请求需要后台处理,有些请求是不需要经过后台处理的(如:css,html,jpg,js等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
目前,通过使用Nginx大大提高了我们网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼。
5. Nginx安装Windows
nginx是可以跨平台的。
下载nginx
官网:http://nginx.org/en/download.html下载稳定版本。
以nginx/windows-1.x为例,直接下载nginx-1.x.zip
下载后解压,后直接可以使用。
启动nginx
不建议双击nginx.exe,会一闪而过。
建议:进到cmd下,到nginx解压目录,执行:nginx.exe,(没有任何提示)
注意:别放在中文目录下。
启动后,在浏览地址栏输入:http://localhost/
,出现下面页表示成功:
配置文件
重点是conf目录,里面有我们经常用到的配置文件。
Nginx.conf文件:
表示监听80端口。
6. Nginx安装Linux
下载linux安装包:
上传到linux服务器:
解压:tar -zxvf xxxxx
解压完后进入nginx目录
自动配置:
(1)运行nginx下面的configure文件: ./configure
(2)再执行:make
出现报错:
安装Nginx相关依赖包:
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
安装完成后验证:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
再执行:
make && make install
查看nginx在哪:
whereis nginx
进入/usr/local/nginx后查看nginx的文件夹:
这里的sbin存放命令,可以在这里启动nginx: ./nginx
或者直接运行:/usr/local/nginx/sbin/nginx
查看配置文件:
进入conf目录,可以看到有个nginx.conf配置文件
Vim nginx.conf
在windows中通过浏览地址栏,访问linux的80端口,看linux上的nginx安装好没:
如: http://192.168.40.128:80
如果有问题,看下linux的防火墙及80端口是否开放。
如果是阿里云的服务器,要去把安全组的80端口放开。