本文共 4019 字,大约阅读时间需要 13 分钟。
请求过程 1. 建立连接 2. 计算资源lvs+nginx架构 lvs将请求快速转发到nginx上,不用建立三次握手阶段,处于第四层 nginx处于第七层,将用户请求进行解读,并将其转发到实际处理的服务器上为什么要使用nginx 技术新,采用异步,非阻塞,速度快 处于需求转发,不需要使用web容器,仅需要web server,损耗低数据倾斜问题 lvs 四层负载均衡,只是转发数据包 分析用户请求的内容 当一台服务器出现压力或瓶颈的时候 a)镜像多台服务器负载客户端的并发 b)切分服务,将服务按a)负载
apache 相对于nginx 的优点:
比nginx 的rewrite 强大模块超多,基本想到的都可以找到,少bug ,nginx 的bug 相对较多
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
在/etc/init.d目录下加入一个nginx文件,把内容复制进去,更改文件权限,使nginx成为一个服务
虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的
通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置
location映射 普通location和正则location 普通location匹配的是最大前缀 正则匹配的是顺序匹配,只要匹配到就停止 有两种情况不需要继续正则匹配 1.定义了‘^~’匹配到了就停止 2.精确匹配,匹配到就停止 概括起来就是 先普通 顺序无关 最大前缀 匹配规则简单 打断: ^~ 完全匹配 再正则 不完全匹配 正则特殊性:一条URI可以和多条location匹配上 有顺序的 先匹配,先应用,即时退出匹配
请求头
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在实际开发中,用户的两次相同的请求可能会通过不同的服务器去响应,所以,必须要能用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共享
为什么新技术总能替换老技术:新技术符合需求,老技术为了客户不能做出革命性的更改,一切总是技术的不断更新
转载地址:http://gujtd.baihongyu.com/