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日,nginx 1.0.4发布。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。
Nginx作用?
Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
正向代理
玩游戏时会用到VPN,打吃鸡带宽延迟的特别的慢,挂VPN就会非常快,因为中国目前不能访问外国的网站的,比如访问谷歌访问不了,但是为什么挂了VPN就能够访问外网了,这里其实是正向代理起了作用。比如说你的电脑,挂了个VPN,就相当于你电脑做了个代理,它会帮你请求外部的资源,比如代理服务器在香港,香港就是可以访问外网的,这个时候你的服务器请求香港服务器,香港服务器再去请求美国服务器,美国服务器就会返回数据到香港服务器,香港服务器就会返回数据给你。
代理客户端的这种翻墙工具就是正向代理。与之同时,代理服务器端的就是反向代理。
动静分离
比如你的项目里有非常多的静态资源,比如你放了bootstrap、jquery的相关js文件,像这样一堆静态资源每次都要从你的jar包里面去加载就非常麻烦,那我希望有个静态资源服务器用来存放这些静态资源,他从静态资源服务器这边加载就好了,能够提升一定的访问速度
Nginx的安装
windows下安装
linux下安装
Nginx常用命令
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止 -s 表示在当前目录下,所以必须要先进入/usr/local/nginx/sbin目录下执行该命令才不会出问题
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
nginx配置文件讲解
nginx.conf这个文件里的内容主要分为三大模块,一个是nginx的全局配置,一个是events模块,一个是http模块。
在http模块中有很多个server的配置,server就是可以配置不同的服务。可以看到nginx.conf配置文件中,有没有注释掉的80端口的服务,也有被注释掉的443端口的服务。
# localhost配置
# 此时访问是:http://localhost:80/
localhost / { #配置为/,当访问80端口的根目录,那么就会走到这里面的相关配置
#xxx 相关配置
}
# 此时访问是:http://localhost:80/admin
localhost /admin { #配置为/,当访问80端口的/admin路径,那么就会走到这里面的相关配置
#xxx 相关配置
}
谨记:所有的配置文件后面一定要以;(分号)结尾
演示
需求:我有个jar,使用java -jar xxx.jar运行起来端口分别为8080、8081的两个服务,但是我得访问localhost:8080/和localhost:8081,这时候需要使用nginx进行反向代理和负载均衡处理。
当访问localhost:80,直接访问到jar包里内容时,就成功了。