Nginx是高性能的HTTP和反向代理的web服务器,占用内存小,处理高并发连接强,处理静态文件好耗费内存少
但是不支持Java语言,Java程序只能通过与Tomcat配合完成
正向代理
客户端无法直接访问目标服务器,而是通过向代理服务器发送请求,代理向目标服务器转交并且将获得的内容返回给客户端,从而实现客户端访问到目标服务器内容
(需要在客户端配置代理服务器进行指定网站访问)
反向代理
客户端对代理没有感知,客户端并不需要任何配置就可以访问
客户端向反向代理发送请求,代理选择目标服务器发送请求,将获取的数据返回给客户端,,对客户端而言代理是目标服务器。
暴露的是代理服务器地址,隐藏了真是服务器IP地址
负载均衡
访问量过大,服务器处理请求处理不过来,此时多开几个进程,但是之前的端口只有一个,如果我们另用一个端口,客户端却是不得知的,处理起来也麻烦且没必要。
以上情况使用反向代理的好处就显而易见,我们隐藏了真正要访问的网址,无需知道端口。此时就需要Nginx作为前置的反向代理。多个Tomcat时Nginx启用负载均衡的策略,根据策略分散请求
此时用户无需知道端口也不需要做选择,只需要访问代理服务器让它去选择就好
健康检查
Nginx内置健康检查功能:如果一个服务器宕机时,请求不会再发送给宕机的服务器了,二回重新请求在其他节点上
服务器限流
即限制客户端请求速度,防止服务器崩,Nginx都是基于漏桶流算法
正常限制访问频率、突发限制访问频率、限制并发连接数
动静分离
为了加快网站的解析速度可以把动静态页面用不同的服务器来解析,从而加快解析速度,降低某单个服务器的压力。
Nginx的静态处理能力很强相反动态处理能力不足,所以一般对于静态资源比如图片、js、css文件等放在Nginx中进行缓存,这样浏览器在访问一个静态资源时Nginx可以直接处理,不需要将请求转发给后端服务器
Nginx使用
配置文件:
cd /usr/local/nginx/conf
vim nginx.conf
启动Nginx:
cd /usr/local/nginx/sbin
./nginx
关闭Nginx:
./nginx -s stop
重启Nginx:
./nginx -s reload
访问IP:端口(在配置文件中配置端口,默认是80)
问题:在win访问linux中nginx默认无法访问,防火墙问题
关防火墙或者设置开放的端口号
Nginx配置文件有三部分组成
第一部分:全局块
主要设置一些影响nginx服务器整体运行的配置指令,只要包括配置运行Nginx服务器的用户(组)、运行生成的work process数,进程PID存放的路径、日志存放路径和类型以及配置文件文件的引入等
work process:高并发服务的关键配置,值越大可支持的恶并发数越多,但是受到硬件、软件等设备的制约
第二部分:event块
主要影响Nginx服务器和用户的网络连接,常见设置包括:是否开启对多个word process下的网络哦连接进行序列化,是否允许同时接受多个网络连接,选取哪种事件驱动模型来处理连接请求等
Worker_connections 1024:每个word process可以同时支持的最大连接数
第三部分:http块
反向代理模拟
1.在Windows系统的hosts文件进行域名和ip对应关系的配置
如果拒绝访问,在该文件的属性中对用户权限设置为可修改
2.在Nginx进行请求转发的配置
3.在Windows上访问www.123.com出现Tomcat默认页面