【Nginx】2. 介绍&作用
1.背景
项目刚刚上线时,用户使用的少,并发量小,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。
后来,平台的用户越来越多了,并发量慢慢增大,这时一台服务器满足不了我们的需求了。
于是我们横向扩展,增加了服务器。这时项目在不同的服务器上全部启动,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。
(没有代理服务器的话,可能会发生:用户1先通过的服务器1登录,但后来的请求又到了服务器2上,又是没登录的)
我们希望这个代理服务器可以帮助接收用户的请求,然后将用户的请求,按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以使用了Nginx。
2.什么是Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
其特点是占有内存少,并发能力强。启动也特别容易,几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。还能在服务不间断的情况下进行软件版本的升级。
Nginx 是一个安装非常的简单、配置文件非常简洁、Bug非常少的服务。Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。
3.Nginx作用
作用有:静态HTTP服务器、HTTP服务器(动静分离)、反向代理、负载均衡
1、静态HTTP服务器
Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现。
Nginx做静态资源服务器:可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。
server {
listen 80; # 端口号
server_name localhost;
location / {
root /usr/share/nginx/html; # 静态文件路径
}
}
访问http://localhost,就会默认访问到 /usr/share/nginx/html 目录下面的index.html。
2、HTTP服务器(动静分离)
软件开发中,有些请求需要后台处理;有些请求不需要经过后台处理,如:css、html、jpg、js等文件,这些不需要经过后台处理的文件称为静态文件。
Nginx可以根据一定规则把不变的资源和经常变的资源区分开,动静资源做好了拆分后,我们就可以根据静态资源的特点将其做缓存操作,从而提高资源响应的速度。这就是网站静态化处理的核心思路。
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,
upstream test{
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name localhost;
location / {
root e:\wwwroot;
index index.html;
}
# 所有静态请求都由nginx处理,存放目录为html
location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
root e:\wwwroot;
}
# 所有动态请求都转发给tomcat处理
location ~ \.(jsp|do)$ {
proxy_pass http://test;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root e:\wwwroot;
}
}
就可以把HTML、图片、css、js放到wwwroot目录下,而tomcat只负责处理jsp和请求。
例如:当请求后缀为gif的时候,Nginx默认会从wwwroot获取到当前请求的动态图文件返回,当然这里的静态文件跟Nginx是同一台服务器。
也可以在另外一台服务器,然后通过反向代理和负载均衡配置过去就好了,只要搞清楚了最基本的流程,很多配置就很简单了,另外location后面其实是正则表达式,所以非常灵活。
3、反向代理服务器
公司增加Nginx代理服务器,通过代理服务器,帮助内部的web服务器转发和处理请求。用户通过访问反向代理服务器就可获得目标服务器的资源。此时Nginx就是反向代理服务器。
server {
listen80;
location / {
proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址
}
}
4、负载均衡:当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理
详细内容可看: