什么是nginx?
nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,所以现在很多知名的公司都在使用nginx。
反向代理服务器有哪些?
Nginx、lvs、F5(硬件)、haproxy等等
nginx应用场景
1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。(解释:因为nginx的默认端口是80,例如在Windows上安装完并启动nginx时就可以访问127.0.0.1:80/来访问nginx欢迎主界面Welcome to nginx!,nginx安装文件下有html文件夹,里面有很多以.html结尾的文件,例如访问127.0.0.1:80/test.html,就会自动访问到nginx/html目录下的test.html页面,所以nginx可以做网页静态服务器)
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。(解析:nginx下,一个server标签就是一个虚拟主机
①基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站
②基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台
③基于ip的虚拟主机,几乎不用。)
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
解压:nginx-windows
双击: nginx.exe
能看到nginx欢迎界面说明,nginx安装成功
演示下 nginx做静态服务器
windows常用命令
nginx.exe -s stop –停止
①占内存小,可以实现高并发连接、处理响应快。
②可以实现http服务器、虚拟主机、反向代理、负载均衡。
③nginx配置简单
④可以不暴露真实服务器IP地址
Web server很重要一部分工作就是提供静态页面的访问,例如images, html page。nginx可以通过不同的配置,根据request请求,从本地的目录提供不同的文件返回给客户端。 在nginx-1.8.0中的http块中已经创建了一个默认的server块。内容如下:
解释:下图中的红色注解写的有点问题,正解应该是:我们把nginx安装在本地,所以nginx所在的ip地址是127.0.0.1,我们访问nginx的时候一般都是通过域名做url来访问,而不是直接把nginx所在的ip地址当成url(因为这样的话就不是所谓的反向代理了)
解释:上面的location表示拦截客户端请求后,跳转的根目录,到该跳转之后的根目录里面找对应要响应的页面文件
什么是反向代理?
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
启动一个Tomcat 127.0.0.1:8080
使用nginx反向代理 8080.itmayiedu.com 直接跳转到127.0.0.1:8080
Host文件新增 (解释一下:在一个nginx反向代理中所有域名都对应nginx所在的ip地址(固定的),反向代理就是根据域名的不同来转发到不同的路径去)
127.0.0.1 8080.itmayiedu.com 127.0.0.1 8081.itmayiedu.com
nginx.conf 配置
配置信息:(server节点实现反向代理,upstream节点实现负载均衡)
这个就没意义了,本来nginx就是通过判断不同的域名来转发到不同的服务器上去
什么是负载均衡
答:负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡策略
1.轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver { server 192.168.0.14; server 192.168.0.15; }
2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver { server 192.168.0.14 weight=2; server 192.168.0.15 weight=1; 意思就是说每访问2次 192.168.0.14,就访问一次192.168.0.15 }
3.IP绑定 ip_hash
每个请求按访问ip的hash结果(底层自己根据来访者的不同,得到不同的hash结果从而决定固定哪个ip)分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver { ip_hash; //表示固定ip的标识 server 192.168.0.14:88; server 192.168.0.15:80; }
实例如下配置:
server { listen 80; server_name www.itmayiedu.com; location /A { proxy_pass http://a.a.com:81/A; index index.html index.htm; } location /B { //就算B项目下的jsp里面有ajax,要访问A项目里面资源,可以在ajax:url中填写www.itmayiedu.com:80/A,让nginx再次请求转发(反向代理) proxy_pass http://b.b.com:81/B; index index.html index.htm; } }
思考题: