nginx

现代互联网架构

请求过程
    1. 建立连接
    2. 计算资源
lvs+nginx架构
    lvs将请求快速转发到nginx上,不用建立三次握手阶段,处于第四层
    nginx处于第七层,将用户请求进行解读,并将其转发到实际处理的服务器上
为什么要使用nginx
    技术新,采用异步,非阻塞,速度快
    处于需求转发,不需要使用web容器,仅需要web server,损耗低
数据倾斜问题
    lvs 四层负载均衡,只是转发数据包
    分析用户请求的内容
        当一台服务器出现压力或瓶颈的时候
            a)镜像多台服务器负载客户端的并发
            b)切分服务,将服务按a)负载

介绍

  1. Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
  2. 第一个公开版本0.1.0发布于2004年10月4日。
  3. 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名
  4. 官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定
  5. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,
  6. 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。

Nginx和apache的优缺点

  • nginx相对于apache的优点:
    1. 轻量级,同样起web 服务,比apache 占用更少的内存及资源 ,抗并发,nginx 处理请求是异步非阻塞的,在高并发下nginx 能保持低资源低消耗高性能,高度模块化的设计,编写模块相对简单 ,社区活跃,各种高性能模块出品迅速 ,而apache 则是阻塞型的
    2. Nginx 配置简洁, Apache 复杂 
  • apache 相对于nginx 的优点:

    比nginx 的rewrite 强大模块超多,基本想到的都可以找到,少bug ,nginx 的bug 相对较多 

    最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

nginx的启动

在/etc/init.d目录下加入一个nginx文件,把内容复制进去,更改文件权限,使nginx成为一个服务

nginx配置解析

  • 什么是虚拟主机

虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的

  • nginx虚拟主机的配置

通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置

  1. 基于ip的虚拟主机, (一块主机绑定多个ip地址)
  2. 基于域名的虚拟主机(servername)
  3. 基于端口的虚拟主机(listen如果不写ip端口模式)

nginx的匹配规则

    location映射
        普通location和正则location
            普通location匹配的是最大前缀
            正则匹配的是顺序匹配,只要匹配到就停止
            有两种情况不需要继续正则匹配
            1.定义了‘^~’匹配到了就停止
            2.精确匹配,匹配到就停止
        概括起来就是
            先普通
                顺序无关
                最大前缀
                匹配规则简单
            打断:
                ^~
                完全匹配
            再正则
                不完全匹配
                正则特殊性:一条URI可以和多条location匹配上
                有顺序的
                先匹配,先应用,即时退出匹配

nginx和高并发

  • 请求头

    host
        决策server负责处理
    uri
        决策location
    反向代理
        proxy_pass  ip:port[uri];
    
  • 什么是反向代理

    正向代理
        客户端不能直接访问目标IP,但是代理服务器可以访问目标IP,于是由客户端向代理服务器发出请求,由代理服务器访问目标IP,再将信息返回给客户端
            代理客户端
    反向代理
        服务器并不处理,而是通过解析uri,将包发给目标处理的服务器,由目标服务器处理完成返回给服务器,再由服务器返回给客户端
            代理服务器
    
  • nginx反向代理的配置

    反向代理:
        proxy_pass
         location /baidu {
                    proxy_pass http://192.168.9.12【/】;  //nginx收到客户端的uri是否传递到上游,由是否在上游域名后有uri设定,没有uri的情况下:传递
         }
    反向代理配置nginx.conf:
        upstream  名字 {
          server  IP:PORT;
          server  IP:PORT;
        }
    
        server {
          location  /  {
    
            proxy_pass http://名字;
          }
    
        }
    tengine新增健康检查模块
        配置一个status的location
            location /status {
                        check_status;
             
                    }
        在upstream配置如下
            check interval=3000 rise=2 fall=5 timeout=1000 type=http;
            check_http_send "HEAD / HTTP/1.0\r\n\r\n";
            check_http_expect_alive http_2xx http_3xx;
    

nginx的session一致性问题

nginx在实际开发中,用户的两次相同的请求可能会通过不同的服务器去响应,所以,必须要能用nginx实现session的一致性问题。http协议是没有状态的,访问再多的网页对于服务器来说是没有区别的,但是在实际应用中必须要让服务器通过某一种方式记住session

    cookie
        session的常见实现是会话cookie,生命周期为浏览器会话期间
        当用户发起请求时,服务器会检查该请求是否包含sessionid,如果没有,服务器会创造一个名为jessionid的输出,cookie返回给浏览器,放在内存里;如果请求中包含session,则服务器会检查找到与该session相匹配的信息,并直接使用该sessionid,这里的session始终是服务器创建的,但是如果浏览器的cookie被禁止后,session就需要通过get方法的url重写或用post方法提交隐藏表单来实现
    session共享
        在实际中客户端的两次请求可能不是同一台服务器,所以需要实现session共享
        Session一致性解决方案
            1、session复制
                tomcat 本身带有复制session的功能。(不讲)
            2、共享session
                需要专门管理session的软件,
                memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。
        安装memcached
            1、安装libevent
            2、安装memcached
            3、启动memcached
                memcached -d -m 128m -p 11211 -l 192.168.9.11 -u root -P /tmp/
                d
                    -d:后台启动服务
                m
                    -m:缓存大小
                p
                    -p:端口
                l
                    -l:IP
                u
                    -u:服务器启动是以哪个用户名作为管理用户
                P
                    -P:服务器启动后的系统进程ID,存储的文件
            配置Tomcat
                3、拷贝jar到tomcat的lib下,jar包见附件
                4、配置tomcat,每个tomcat里面的context.xml中加入
            测试session共享

思考

为什么新技术总能替换老技术:新技术符合需求,老技术为了客户不能做出革命性的更改,一切总是技术的不断更新

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值