博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx
阅读量:2725 次
发布时间:2019-05-13

本文共 4019 字,大约阅读时间需要 13 分钟。

现代互联网架构

请求过程    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共享

思考

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

转载地址:http://gujtd.baihongyu.com/

你可能感兴趣的文章
iOS开发19-iOS CALayer的position和anchorPoint
查看>>
小技巧2-MRC和ARC下防止Block循环引用
查看>>
iOS开发20-iOS开发中要注意的循环引用
查看>>
iOS开发21-OC学习- #include、#import和@class,解决#import死循环
查看>>
iOS开发25-iOS可视化编程-Interface Builder
查看>>
小技巧3-使用Xcode的代码块功能提高编码速度
查看>>
iOS开发27-iOS 可视化编程-Size Classes
查看>>
小技巧3-iOS 获取当前系统时间
查看>>
小技巧4-iOS Xcode显示代码行数
查看>>
小技巧5-iOS 统计Xcode整个工程的代码行数
查看>>
小技巧6-iOS 获取和跳转到Storyboard创建的ViewController
查看>>
小技巧7-iOS 如何关闭所有断点、移除所有断点
查看>>
小技巧8-iOS 使用Global BreakPoint(全局断点)快速定位Bug
查看>>
iOS常见错误2-CoreData: Cannot load NSManagedObjectModel.nil is an illegal URL parameter
查看>>
小技巧9-iOS UITextField结束编辑、收回键盘
查看>>
小技巧10-Mac下paros抓包工具的使用
查看>>
iOS开发39-Mac OS X下搭建XAMPP环境
查看>>
iOS常见错误3-Xcode导入第三方库 'MAMapKit/MAMapKit.h' file not found('XXXX/XXXX.h' file not found)错误
查看>>
iOS小技巧11-Xcode中相对路径和绝对路径的使用
查看>>
iOS常见错误4-UITableView _configureCellForDisplay:forIndexPath:错误
查看>>