为什么要使用nginx
很多公司会用到nginx做代理服务器,为什么用nginx,tomcat服务器不行吗?
tomcat缺点:并发量小,用户使用的少
nginx:高并发,高性能,cpu、内存等资源消耗却非常低,运行非常稳定。
nginx作用:反向代理,负载均衡。完全听不懂。。。。
先来了解下什么叫正向代理和方向代理。
正向代理
正常情况下,我们用户通过输入域名,ip,端口直接访问服务器。相当于直接连接。这个时候,就会向服务器泄露我们自己的ip。
如何让服务器不知道我们的ip呢,使用网关转发用户请求,这样服务器只知道网关的ip而不知道我们客户端的ip。这样服务端就不知道真正发请求的用户到底是谁。
这就叫做正向代理。
反向代理
用户端无法直接访问服务器上,但是可以直接访问nginx网关,再让nginx分发到不同的服务器/应用程序。
用户不知道自己使用的是哪台服务器,也不知道它的具体ip和端口。
这就是反向代理。
正向代理和反向代理:
正向代理:服务器不知道用户ip和端口。
反向代理:用户不知道服务器ip和端口。
负载均衡
前面提到tomcat用户并发小,最直接的办法就是多增加几个tomcat服务器,这样高并发的话可以把用户分配到空闲的服务器。
但是会产生一个问题:
假设现在有tomcat0,1,user把上传的文件放到tomcat0了
user访问该文件,发现tomcat0正在工作,所以会分配tomcat1给user
问题:发现访问不到之前上传的文件。(因为tomcat1没有user上传的文件)
也就是我们多增加几个tomcat服务器。当用户访问的时候,请求可以提交到空闲的tomcat服务器上。
nginx的作用
经常听到别人说nginx的作用:反向代理,负载均衡。完全听不懂。。。现在可算听懂了。
Nginx就相当于一个网关,转发和接收消息就相当于反向代理,把消息分发给其他人就相当于负载均衡。