1、正向代理服务器VS反向代理服务器
我们知道,万维网的相互访问必须是外部网络间的相互访问,也就是访问的必须是外网IP或者映射为外网IP的域名。诸如192.168.1.11这样的内网IP是无法直接请求访问的。如果外网需要访问内网IP,需要通过一个媒介,这个媒介能代理外网对内网的访问。所有外网对某内网的访问都需要通过这个代理的Web服务器来过滤分发处理。这种服务器就叫反向服务器。常见的反向服务器有:Nginx、Apache、Lighttpd。其中,Apache目前的市场占有率最高。Nginx有种后来者居上的感觉,而且Nginx具有高并发,CPU和内存消耗少,稳定性好,配置简单、支持热部署等优点,受到诸如新浪、网易、豆瓣等很多公司的青睐。
正向代理服务器:只能代理内部网络对Internet的连接请求。不支持外部对内部网络的访问请求。客户机必须指定代理服务器。也就是我们通常说的通过代理服务器上网。很多同学也常用这种正向代理服务器方式“翻墙”。
反向代理服务器:特指能够代理外部Internet网络上的主机来访问内部网络(比如IP地址为内网192.168.1.)的服务器。外部网络不需要额外的配置。特别需要注意的是:反向代理服务器不保存任何网页的真实数据,所有的网页和程序,都保存在内部的Web服务器上。所以针对反向代理服务器的攻击不会使网页信息遭到破坏,从而进一步增强了Web服务器的安全性。最后要说明的是:)反向代理负载均衡服务器是内部网络与外网交流通信的唯一通道,所以如果通道被阻断了,则内部就再也无法为外部提供任何服务,这时候需要考虑至少两台以上的反向代理负载均衡服务器,实现故障转移与高可用。)反向代理服务器实现了负载均衡后,一般情况下用户可能用户的请求可能分发给了不同的服务器去处理,这时候就必然需要考虑session共享的问题了。
2、Rewrite规则
Rewrite的主要功能就是实现URL的重写
Nginx的Rewrite规则采用Perl兼容正则表达式的语法进行规则匹配
通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向和选择配置。
 
举例:
)一些使用MVC框架的程序只有一个入口,可以通过Rewrite实现
)将动态URL地址要伪装成静态HTML,便于搜索引擎抓取。
)由于目录结构、域名变化的旧URL需要跳转到新的URL上,需要Rewrite处理
 
3、Nginx配置文件的组成部分
main全局配置
server虚拟主机配置
upstream反向代理负载均衡配置
location目录匹配配置
 
4、Nginx模块
Nginx的模块不能够像Apache一样动态的添加,所有的模块都需要预先编译进Nginx的二进制可执行文件中。

#cd nginx-1.4.
#./configure
--prefix=/usr/local/
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module
--with-pcre=/usr/local/src/pcre-8.34
--with-zlib=/usr/local/src/zlib-1.2.
--with-openssl=/usr/local/src/openssl-1.0.1c
#make
#make install
 
按角色分有3种
)Handlers - 处理模块 - 用于处理HTTP请求并输出内容
)Filters - 过滤模块 - 用于过滤Handler输出的内容
)Load-balancers - 负载均衡模块 - 选取多个后台服务器之一并将HTTP请求转发到该服务器。
模块间的相互配合处理流程:
--->客户端发送HTTP请求到Nginx服务器
--->Nginx基于配置文件中的位置选择一个合适的处理模块
--->负载均衡模块选择一台后端服务器(反向代理时)
--->处理模块进行处理并把输出缓冲放在第一个过滤模块上
--->第一个过滤模块处理后输出给第二个过滤模块处理
--->第2个交给第3个,... 第n个交给第n+1个
--->最后过滤完毕后,把处理结果发送给客户端
 
按类型分有6种
)核心模块 -> 主模块 + 事件模块
)标准HTTP模块
)可选HTTP模块
)邮件模块
)第三方模块
)补丁
5、Nginx实现Web缓存
web缓存位于web服务器和客户端之间
【客户端】--->【web缓存】--->【web服务器】
当客户端第一次访问一个URL时,Web缓存会去后端Web源服务器取回要输出的内容。
当客户端再次访问该URL时,Web缓存会直接输出内容给客户端,不再访问web源服务器。
好处:
降低内容源服务器、数据库的负担
减少网络延迟
提高用户访问的响应速度
增强用户体验
nginx本身的proxy_cache指令支持Web缓存服务。
新浪基于Nginx开发了一个NCACHE模块,也可以支持Web缓存服务。
这使得Nginx可同时作为负载均衡服务器与Web缓存服务器使用。

[Nginx] 关键概念解读的更多相关文章

  1. Kafka学习之(一)了解一下Kafka及关键概念和处理机制

    Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模小打的网站中所有动作流数据.优势 高吞吐量:非常普通的硬件Kafka也可以支持每秒100W的消息,即使在非常廉价的商用机器上也能做 ...

  2. C++指针的概念解读

    C++指针的概念解读 超详细 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区 ...

  3. Docker关键概念阐述

    要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image.container.service.swarm.stack等. 在介绍这几个概念时,会使用到一个测试环境,这个测试环境是 ...

  4. 【NS-3学习】ns3-模拟基础:关键概念,日志,命令行参数

    前言 本篇博客先介绍在仿真过程中会使用到的一些关键概念,然后介绍便于调试仿真脚本的常用技术:日志.命令行参数. 关键概念 节点 在因特网术语中,主机(终端)是指任何一台连接到网络的计算设备.ns-3并 ...

  5. Libra教程之:Libra协议的关键概念

    文章目录 Libra协议 交易和状态 交易详解 账本状态详解 版本数据库 账户 账户地址 Proof 验证节点 存储 Libra协议 Libra协议是Libra区块链的基础,本文主要讲解Libra协议 ...

  6. nginx模型概念和配置文件结构

    一. nginx模型概念: Nginx会按需同时运行多个进程: 一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程( ...

  7. DotNetty关键概念及简单示例(基于NET5)

    DotNetty关键概念及简单示例(基于NET5) 目录 DotNetty关键概念及简单示例(基于NET5) 1.DotNetty 设计的关键 1.1 核心组件 1.1.1 Channel 1.1.2 ...

  8. nginx基础概念

    nginx基础概念(100%) connection¶ 在nginx中connection就是对tcp连接的封装,其中包括连接的socket,读事件,写事件.利用nginx封装的connection, ...

  9. (一)Netty源码学习笔记之概念解读

    尊重原创,转载注明出处,原文地址:http://www.cnblogs.com/cishengchongyan/p/6121065.html  博主最近在做网络相关的项目,因此有契机学习netty,先 ...

随机推荐

  1. Python3基础 用三个双引号 print输出多行文本

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  2. Python3基础 使用技巧:把代码的字体变大

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  3. js将数组元素随机排序的方法

    在群里看见的一个面试题,试了一下,还是可以做出来的,但是需要查资料,主要是岁一些方法了解的不清楚,可能这个跟我平时不太注重基础理论有关系,像什么构造函数啊,我根本就不关心什么叫构造函数,我一直都以为我 ...

  4. mysql for windows之my.ini优化

    修改配置文件 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini  并重新启动. 1, 查看MySQL服务器配置信息 mysql> show variabl ...

  5. C# WPF MVVM 实战 – 5- 用绑定,通过 VM 设置 View 的控件焦点

    本文介绍在 MVVM 中,如何用 ViewModel 控制焦点. 这焦点设置个东西嘛,有些争论.就是到底要不要用 ViewModel 来控制视图的键盘输入焦点.这里不讨论,假设你就是要通过 VM,设置 ...

  6. ajax接收返回值获取不到问题

    function testAsync() { //定义一个全局变量来接受$post的返回值 var result; //用ajax的“同步方式”调用一般处理程序 $.ajax({ url: " ...

  7. [SAP ABAP开发技术总结]几个小问题

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. .net反射详解(转)

    摘自:http://www.cnblogs.com/knowledgesea/archive/2013/03/02/2935920.html 概述反射 通过反射可以提供类型信息,从而使得我们开发人员在 ...

  9. Codeforces Round #272 (Div. 2) C. Dreamoon and Sums 数学

    C. Dreamoon and Sums time limit per test 1.5 seconds memory limit per test 256 megabytes input stand ...

  10. IBM Lotus Domino V8.5 服务器管理入门手册

    转自 http://freemanluo.blog.51cto.com/636588/336128