nginx学习笔记

应用级服务器:  tamcat    擅长处理动态页面 ,也支持http协议,但性能不高。
                        除了tomcat还有 webLogic  jBoss
web服务器:处理静态代码  HTML js css  只负责处理http协议
                    常见的web服务器 
                                Apache:对cpu,内存占有率比较高
                              nginx:对内存,cpu占有率低
                             IIS (微软出的 只支持Windows)

Web 服务器与应用服务器的区别是什么

严格意义上Web服务器只负责处理HTTP协议,只能发送静态页面的内容如图片、css、js等。而JSP,ASP,PHP等动态内容需要通过 CGI、FastCGI、ISAPI等接口交给其他程序去处理。这个其他程序就是应用服务器,应用服务器包括Tomcat、WebLogic、JBoss 等。
应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见 Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分。
 
为什么要使用nginx
  要回答为什么要使用nginx,那就先说说nginx能做些什么。
  首先,nginx能做反向代理,那么什么是反向代理呢,举个栗子,我想在本地使用 www.mickey.com 的域名去访问 www.taobao.com。那么这个时候我们就可以通过nginx去实现。
  再者,nginx能实现负载均衡,什么是负载均衡呢?就是我的项目部署在不同的服务器上,但是通过统一的域名进入,nginx则对请求进行分发,减轻了服务器的压力。
  在上面这两种情况下,nginx服务器的作用都只是作为分发服务器,真正的内容,我们可以放在其他的服务器上,这样来,还能起到一层安全隔壁的作用,nginx作为隔离层。
 
 
Nginx:高性能的HTT和方向代理服务器
             在高连接并发的情况下,Nginx是Apache服务器不错的替代品
             Nginx作为负载均衡服务器
                        企业级应用:为了负载均衡,假设有1000个请求,二台服务器。如果每 台分配500个请求, 
                                                将会大大提高效率。为了让他们共同完成一件事,使用nginx把大量或
                                                    高并发的请求分配到每一台服务器
            作为邮件代理服务器 Nginx 同时也是一个非常优秀的邮件代理服务器
            Nginx 是一个 [#installation 安装]
 
任何一个网络传输 的连接都有一个端口号
         浏览器的端口号:80  
        mysql:3306
        Oracle:1521
        Linix:22
 
 
nginx cmd窗口常用命令:nginx.exe -s stop  关闭nginx
                                         nginx.exe  -t 检测语法是否正确
                                          nginx.exe  -s reload 重新加载 在不关闭服务器的情况下 加载配置
 
配置nginx :
 
        1.开启  nginx  点击nginx.exe开启nginx
 
2.找到下面的路径  将文件打开  在文件中加入 下面的代码 
 
 
 
127.0.0.1  www.helloworld.com  //这里配置的是内网的域名  不加  默认访问外网 而外网我们不知道是否可以访问到
 
 
3.找到下面的图片的 nginx.conf配置文件  打开  加入下面的代码  详情看注解
注意    nginx。exe开启数量 只能有一个 开启多个就会访问不到
#设定注册反向代理的配置
upstream my_server{
    server 127.0.0.1:8080;
}
 
#http虚拟主机服务器配置
server{
    #监听80端口
    listen 80;
    
    #定义使用 WWW.xxx.com访问
    server_name   www.helloworld.com;
    
    #首页
    index  index.html
    
     #指向webapp的目录
    root D:\01_Workspace\Project\github\zp\SpringNotes\spring‐security\springshiro\
src\main\webapp;
 
    #编码格式
    charset utf-8;
 
    #代理配置参数
    proxy_connect_timeout 180;
    proxy_send_timeout 180;
    proxy_read_timeout 180;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarder-For $remote_addr;
 
    #反向代理的路径(和upstream绑定),location 后面设置映射的路径
    location / {
        proxy_pass http://my_server;#这个http后面呢名字是方向代理的名字
    }
 
}
 
在cmd窗口输入 nginx -t  检测语法是否正确  最后输入 nginx -s reload 重新加载
 
4.在eplise建个项目测试
 
5.浏览器  输入  http://www.helloworld.com/nginxTest/ 测试即可
 

nginx目录说明

Nginx 安装目录中主要包括了以下5(不同的操作系统安装完成后的目录不一样)个文件夹:
  1. conf:存放配置文件
  2. html:可调用的html网页文件
  3. logs:记录日志文件
  4. bin:Nginx服务器主程序
  5. temp:运行时产生的临时文件
  • conf 目录存放这nginx的所有配置文件,其中nginx.conf 文件是 Nginx 服务器的主配置文件
  • html 目录下就存放了两个 html文件,分别是:
    1. index.html (运行成功时显示的界面)
    2. 50x.html (出错时显示的界面,如503错误.)
  • logs 顾名思义,存放Nginx 服务器的日志文件。服务器没有启动时,这个文件夹是空的。一般启动后,会有两个文件:
    1. access.log (访问日志文件)
    2. error.log (错误日志文件)
  • bin(windows安装没有该文件夹只有nginx.exe文件):其中只有一个nginx文件,这就是 Nginx 服务器的主程序了。
 
负载均衡:
         企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。
 
负载均衡的作用
1、转发功能
按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。
轮询 :nginx默认及时轮询
 a.   在ecplise起两个tomcat 
 
 
jsp页面代码
在nginx.conf文件添加两个端口号
#设定注册反向代理的配置
upstream my_server{
    server 127.0.0.1:8081;
    server 127.0.0.2:8291;
}
 
 
 
在浏览器输入  http://www.helloworld.com/nginxTest/ 测试
结果是两个tomcat 输出 test的数量偶数时相同 
 
权重: 通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。权重越大几率越大
    权重的配置跟上面轮询是一致的 不同是要在端口的后面指定 weight
#设定注册反向代理的配置
upstream my_server{
    server 127.0.0.1:8081 weight=3;
    server 127.0.0.2:8291 weight=1;
}
 
2、 故障移除
通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。(eginx不能实现oracle的分布式  oracle自带分布式 集群)
3、 恢复添加
如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。
 
 
使用Nginx的高可用 
      除了要实现网站的高可用,也就是提供n多台服务器用于发布相同的服务,添加负载均衡服务器分发请求以保证在高并发下各台服务器能相对饱和的处理请求。同样,负载均衡服务器也需要高可用,以防如果负载均衡服务器挂掉了,后面的应用服务器也紊乱无法工作。
     实现高可用的方案:添加冗余。添加n台nginx服务器以避免发生上述单点故障。具体方案详见下文:keepalive+nginx实现负载均衡高可用
 
负载均衡不论是各种软件或硬件上的解决方案,主要还是将大量的并发请求按照一定的规律分发给不同的服务器处理,从而减少某台服务器的瞬时压力,提高网站的抗并发能力
 
 
高并发( High Concurrency )是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指, 通过设计保证系统能够同时并行处理很多请求
提高系统并发能力的方式,方法论上主要有两种:垂直扩展( Scale Up )与水平扩展( Scale Out )。 前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的, 互联网分布式架构设计高并发终极解决方案还是后者:水平扩展
互联网分层架构中,各层次水平扩展的实践又有所不同:
1 )反向代理层可以通过“ DNS 轮询”的方式来进行水平扩展;
2 )站点层可以通过 nginx 来进行水平扩展;
3 )服务层可以通过服务连接池来进行水平扩展;
4 )数据库可以按照数据范围,或者数据哈希的方式来进行水平扩展;
各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限。
 
 
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
方法论上,高可用是通过冗余+自动故障转移来实现的。
整个互联网分层系统架构的高可用,又是通过每一层的冗余+自动故障转移来综合实现的,具体的:
(1)【客户端层】到【反向代理层】的高可用,是通过反向代理层的冗余实现的,常见实践是keepalived + virtual IP自动故障转移
(2)【反向代理层】到【站点层】的高可用,是通过站点层的冗余实现的,常见实践是nginx与web-server之间的存活性探测与自动故障转移
(3)【站点层】到【服务层】的高可用,是通过服务层的冗余实现的,常见实践是通过service-connection-pool来保证自动故障转移
(4)【服务层】到【缓存层】的高可用,是通过缓存数据的冗余实现的,常见实践是缓存客户端双读双写,或者利用缓存集群的主从数据同步与sentinel保活与自动故障转移;更多的业务场景,对缓存没有高可用要求,可以使用缓存服务化来对调用方屏蔽底层复杂性
(5)【服务层】到【数据库“读”】的高可用,是通过读库的冗余实现的,常见实践是通过db-connection-pool来保证自动故障转移
(6)【服务层】到【数据库“写”】的高可用,是通过写库的冗余实现的,常见实践是keepalived + virtual IP自动故障转移
 
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值