Proxy Server及Reverse Proxy Server的关系

  categories:资料  tags:, ,   author:

原创文章,转载请指明出处并保留原文url地址

Proxy是网络上常用的一种软件,我们有时候上网要经常配置代理服务器,在几年前我们经常为找个好的代理费劲, 现在代理用的少了, 但是为了上一些特定的网站还是有代理才能上的。

Reverse Proxy反向代理服务器是一种常用的server端软件。

代理及反向代理他们有什么区别?

从本文开始我们面向程序开发者将分3次介绍代理服务器proxy server及反向代理服务器Reverse Proxy server相关工作过程。

本文简单介绍一下代理服务器及反向代理服务器的基本功能等,下一篇文章我们重点介绍一下代理服务器工作过程,数据是如何传输的,网络连接过程等。最后我们在介绍一下反向代理服务器工作过程及原理等。希望大家通过本文能了解代理服务器及反向代理服务器工作原理。

一.Proxy Server的基本工作过程

下图是一个有proxy server互联网示意图

image[13][1]

图中主要分为3个区域, 左侧是“被代理的内部区域”, 右侧是“服务器”区域,中间空白是互联网区域。

被代理内部的区域:一般是特定范围的逻辑区域, 比如一个企业, 一个机构, 一般这个区域内部相对安全

互联网:互联网数据区域中有各种服务器,各种资源, 各种人员等,有爬虫, 各种病毒,木马等等, 相对不安全

服务器:是具体的资源及服务提供商的服务器等, 提供具体的网络服务及页面。

如上图,代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的会话层。主要的功能有:

1.突破自身IP访问限制,访问国外站点。教育网、过去的169网等网络用户可以通过代理访问国外网站。

2.访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源 的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。

3.提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。

4.隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。

l … 阅读全文

文化苦旅

  categories:书路  tags:  author:

最近上班路上听够了学习资料等,正好找个新东西换换口味, 听了《文化苦旅》这个书的第一部分以及第二部分的一部, 感觉非常好, 特别是“道士塔”一部分似有一种强烈的冲动与责任感, 推荐大家听吧, 很好。

由于在路上因此我是听的mp3,感觉这个方式效率比较高, 充分类用了上班的1.5小时,建议大家也利用一下闲暇时间听一下了。

资料的下载地址建议大家自己去下载了, 无法提供, 实在找不到的,可以联系我了。

下面百度百科中截取相关介绍

wps_clip_image-19518[3][1]

本书为当代著名散文作家、世界级文化学者余秋雨的文化散文专集,是余秋雨教授80年代在海内外讲学和考察途中写下的作品,是他的第一部文化散文集,也是他的代表作。

全书共37篇,分别为《道士塔》《莫高窟》《阳

关雪》《沙原隐泉》《柳侯祠》《白莲洞》《都江堰》《三峡》《洞庭一角》《庐山》《贵池傩》《青云谱随想》《白发苏州》《江南小镇》《寂寞天柱山》《风雨天一阁》《西湖梦》《狼山脚下》《上海人》《五城记》《牌坊》《庙宇》《夜航船》《吴江船》《信客》《酒公墓》《老屋窗口》《废墟》《夜雨诗意》《笔墨祭》《藏书忧》《腊梅》《家住龙华》《三十年的重量》《漂泊者们》《华语情结》《这里真安静》。

余秋雨的散文素以文采飞扬、思维敏捷、知识丰厚、见解独到而备受万千读者喜爱。他的历史散文更是别具一格,见常人所未见,思常人所未思,善于在美妙的文字中一步步将读者带入文化意识的河流,启迪哲思,引发情致,具有极高的审美价值和史学意义上的文化价值。此外,还有早已传为名篇的论析文化走向的文章《上海人》《笔墨祭》以及读者熟知的充满文化感慨的回忆散文。散文写成美文不易,写出点历史文化意味更难。余秋雨的历史散文,也许可以让人二者兼得。

《文化苦旅》是作者的一部文化散文集。其中有些文章曾在各类文学评奖中获得首奖,全书的主题是凭借山水风物以寻求文化灵魂和人生真谛,探索中国文化的历史命运和中国文人的人格构成。其中《道士塔》(选入人教版中学教材)《阳关雪》等,是通过一个个古老的物像,描述了大漠荒荒的黄河文明的盛衰,历史的深邃苍凉之感见于笔端。《白发苏州》《江南小镇》等却是以柔丽凄迷的小桥流水为背景,把清新婉约的江南文化和世态人情表现得形神俱佳。《风雨天一阁》 《青云谱随想》等直接把笔触指向文化人格和文化良知,展示出中国文人艰难的心路历程。此外,还有早已传为名篇的论析文化走向的文章《上海人》《笔墨祭》以及读者熟知的充满文化感慨的回忆散文《牌坊》《庙宇》《家住龙华》等。作者依仗着渊博的文学和史学功底,丰厚的文化感悟力和艺术表现力所写下的这些文章,不但揭示了中国文化巨大的内涵,而且也为当代散文领域提供了崭新的范例。

余秋雨走在中华民族的土地上,用其独特的观察力和洞悉力去深思这古老民族的深层文化,用心思细腻的笔触,为这趟巡视华夏文化的“苦旅”,写本书!它不甘甜,因为里头有太多不忍与亲身体验的辛酸.苦苦的味道,为这本纪录中国千年文化的书,多写了一道滋味.未看过《文化苦旅》之前,大概也不会想到,一处处令人流连忘返的风景名胜与历史古迹在它们的背后会有如此深层的涵义;而作者运其妙笔,以干净漂亮的散文组合,使它们成了一篇篇让炎黄子孙惊醒的文章。

走进书中的情境与思考,我们不禁严肃起来。像一群被流放的士子,流放到一块不甚熟悉的土地,逼使我们不得不因那历史和文化的推引,走向前去。终于我们眼前出现了莫高窟的石洞,石洞依旧壮观,石像,壁画依然不言,我们静静看着光影投射在石壁上的变化,如同它们静静地看着敦煌千年来的变迁。千年前第一刀的划下,开启了千年后莫高窟的壮丽。它曾遭遇浩劫:王道士手中一串钥匙把守了这千年的敦煌,却任其流落到外人手里,而中华子孙却也将之弃而不顾,那一马车一马车的文物输往外国。而多年后的今天,那神秘又充满意义的洞窟,它并非炫丽的外表为何能引起大家的注目,是因为它已成为一种仪式的、人性的,深层的蕴藏。我们在这儿看到美,看到宗教的天地,尤其它是中国文化千年的标本。

“浅渚波光云彩,小桥流水江村”这副楹联道尽了江南小镇的魅力。江南小镇它不是经由大自然雕琢出的自然山水,而是属于华夏古老文化的人文山水。我们不曾到过此处,但书中的江南小镇却给予我们一种,回到家中那般自在,难怪历年来,许多文人遇到了政治不清明或人生不得志时,便会到此隐居起来,但在荒山结庐有着生活上的麻烦,“大隐隐于市”便成了文人来江南隐居的最好推力。其实我们对“隐”有着正反两面的看法,好的一面其一就是当中国文化受到某些因素例如北方游牧民族入侵中原地区而开始凋零时,文人或学者们就会带着他们的知识修养到此处隐居起来,藉以免于战争或政治的迫害;其二生老病死与官场浮沉是文人们的失意时刻,做什么事都不顺心,此时最好的方式就是让自己的身心获得纾解,找个地方隐居,等休息够了又是一段新旅程的开始。坏处是有人会把隐居当作沽名钓誉的工具,假隐以求得一官半职,这些举动让中国特有的隐的文化开始产生变质,隐士生前的孤傲和死后的名声全然黯暗。尽管如此,我们对隐还是保有着正面看法,因为古代中国给文人发展的空间实在大狭隘了,逼得他们除了隐或许只有一死,与其这样让自己的雄心壮志陨落,我们会选择沉潜,待有朝一日能东山再起。

余秋雨曾说他常伫立前人伫立过之处,观察自然与人文环境中去思考前人的情感;在柳侯祠前,由一尊石像追想柳宗元的一生,从他的文采想至他的被贬,既遭贬谪,而永柳二州又是荒远之地,因此他自放于山林水泽之间,将其困厄感伤的心境,完全寄托在游赏山水之间与文章创作之中,使中国文学史上拥有了《永州八记》这样出色的山水文学,这样的一代士人的气节与傲气让后世学者不得不去尊敬他的文化意识及人格,带着崇敬和疑问来瞻仰这位大文豪。

合上书卷,我们不由自主地走向窗前,流动的车潮及人潮正自我宣示另一种文化,不论是在哪里,但是深埋千年文化的疆土呢?也许咱们应该背起满满对中国文化的疑虑,亲自去辽阔的土地,让我们读过书后,沉重而苦苦的步伐,也走在上面。… 阅读全文

集合框架 Queue篇(6)—LinkedBlockingQueue

  categories:资料  tags:  author:

来源:互联网

Queue

————
1.ArrayDeque, (数组双端队列)
2.PriorityQueue, (优先级队列)
3.ConcurrentLinkedQueue, (基于链表的并发队列)

4.DelayQueue,                                         (延期阻塞队列)(阻塞队列实现了BlockingQueue接口)
5.ArrayBlockingQueue,           (基于数组的并发阻塞队列)
6.LinkedBlockingQueue,        (基于链表的FIFO阻塞队列)
7.LinkedBlockingDeque, (基于链表的FIFO双端阻塞队列)
8.PriorityBlockingQueue,        (带优先级的无界阻塞队列)
9.SynchronousQueue                       (并发同步阻塞队列)
—————————————————–
LinkedBlockingQueue

采用对于的next构成链表的方式来存储对象。
由于读只操作队头,而写只操作队尾,这里巧妙地采用了两把锁,
对put和offer采用putLock,对take和poll采用takeLock,避免了读写时相互竞争锁的现象,
因此LinkedBlockingQueue在高并发读写操作都多的情况下,性能会比ArrayBlockingQueue好很多,
在遍历以及删除元素时则要把两把锁都锁住。

public class LinkedBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable {
/**
* 链表节点node类结构… 阅读全文

Nginx ngx_http_browser_module模块基本指令整理

  categories:nginx  tags:  author:

原创文章,转载请指明出处并保留原文url地址

本文主要针对nginx的ngx_http_browser_module模块做简单介绍,本文具体包括如下指令:

ancient_browser,ancient_browser_value,modern_browser,modern_browser_value

ngx_http_browser_module模块根据用户请求中”User-Agent”内容创建代表浏览器的变量

$modern_browser

若浏览器被识别为一个流行的浏览器,这个值等于指令modern_browser_value指定的值。

$ancient_browser

若浏览器被识别为一个比较旧的浏览器,这个值等于指令ancient_browser_value指定的值。

$msie

如果浏览器被识别为MSIE,这个值为1。

【如果不需要这个模块,可以在编译nginx时增加-without-http_browser_module参数】

配置实例:

为指定的浏览器指定index文件:

modern_browser_value “modern.”;

modern_browser msie 5.5;

modern_browser gecko 1.0.0;

modern_browser opera 9.0;

modern_browser safari 413;

modern_browser konqueror 3.0;

index index.${modern_browser}html index.html;

将一些来自比较旧的浏览器的请求重定向到特定页面:

modern_browser msie 5.0;

modern_browser gecko 0.9.1;

阅读全文

集合框架 Queue篇(5)—ArrayBlockingQueue

  categories:资料  tags:  author:

来源:互联网

Queue

————
1.ArrayDeque, (数组双端队列)
2.PriorityQueue, (优先级队列)
3.ConcurrentLinkedQueue, (基于链表的并发队列)

4.DelayQueue,                                         (延期阻塞队列)(阻塞队列实现了BlockingQueue接口)
5.ArrayBlockingQueue,           (基于数组的并发阻塞队列)
6.LinkedBlockingQueue,        (基于链表的FIFO阻塞队列)
7.LinkedBlockingDeque, (基于链表的FIFO双端阻塞队列)
8.PriorityBlockingQueue,        (带优先级的无界阻塞队列)
9.SynchronousQueue                       (并发同步阻塞队列)
—————————————————–

ArrayBlockingQueue
是一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。

这是一个典型的“有界缓存区”,固定大小的数组在其中保持生产者插入的元素和使用者提取的元素。一旦创建了这样的缓存区,就不能再增加其容量。试图向已满队列中放入元素会导致操作受阻塞;试图从空队列中提取元素将导致类似阻塞。

此类支持对等待的生产者线程和消费者线程进行排序的可选公平策略。默认情况下,不保证是这种排序。然而,通过将公平性 (fairness) 设置为 true 而构造的队列允许按照 FIFO 顺序访问线程。公平性通常会降低吞吐量,但也减少了可变性和避免了“不平衡性”。

public class ArrayBlockingQueue<E> extends AbstractQueue<E> … 阅读全文

MySQL源代码安装实录

  categories:mysql资料  tags:  author:

原创文章,转载请指明出处并保留原文url地址

Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。

Percona Server 只包含 MySQL 的服务器版,并没有提供相应对 MySQL 的 Connector 和 GUI 工具进行改进。

Percona Server 使用了一些 google-mysql-tools, Proven Scaling, Open Query 对 MySQL 进行改造。

Percona 网址如下:http://www.percona.com/

下载地址:http://www.percona.com/downloads/

实验安装的mysql版本:

http://www.percona.com/redir/downloads/Percona-Server-5.5/Percona-Server-5.5.28-29.3/source/Percona-Server-5.5.28-rel29.3.tar.gz阅读全文

集合框架 Queue篇(4)—阻塞队列和生产者-消费者模式、DelayQueue

  categories:资料  tags:  author:

来源:互联网

Queue

————
1.ArrayDeque, (数组双端队列)
2.PriorityQueue, (优先级队列)
3.ConcurrentLinkedQueue, (基于链表的并发队列)

4.DelayQueue,                                         (延期阻塞队列)(阻塞队列实现了BlockingQueue接口)
5.ArrayBlockingQueue,           (基于数组的并发阻塞队列)
6.LinkedBlockingQueue,        (基于链表的FIFO阻塞队列)
7.LinkedBlockingDeque, (基于链表的FIFO双端阻塞队列)
8.PriorityBlockingQueue,        (带优先级的无界阻塞队列)
9.SynchronousQueue                       (并发同步阻塞队列)
—————————————————–

阻塞队列和生产者-消费者模式

阻塞队列(Blocking queue)提供了可阻塞的put和take方法,它们与可定时的offer和poll是等价的。如果Queue已经满了,put方法会被阻塞直到有空间可用;如果Queue是空的,那么take方法会被阻塞,直到有元素可用。Queue的长度可以有限,也可以无限;无限的Queue永远不会充满,所以它的put方法永远不会阻塞。

阻塞队列支持生产者-消费者设计模式。一个生产者-消费者设计分离了“生产产品”和“消费产品”。该模式不会发现一个工作便立即处理,而是把工作置于一个任务(“to do”)清单中,以备后期处理。生产者-消费者模式简化了开发,因为它解除了生产者和消费者之间相互依赖的代码。生产者和消费者以不同的或者变化的速度生产和消费数据,生产者-消费者模式将这些活动解耦,因而简化了工作负荷的管理。

生产者-消费者设计是围绕阻塞队列展开的,生产者把数据放入队列,并使数据可用,当消费者为适当的行为做准备时会从队列中获取数据。生产者不需要知道消费者的省份或者数量,甚至根本没有消费者—它们只负责把数据放入队列。类似地,消费者也不需要知道生产者是谁,以及是谁给它们安排的工作。BlockingQueue可以使用任意数量的生产者和消费者,从而简化了生产者-消费者设计的实现。最常见的生产者-消费者设计是将线程池与工作队列相结合。

阻塞队列简化了消费者的编码,因为take会保持阻塞直到可用数据出现。如果生产者不能足够快地产生工作,让消费者忙碌起来,那么消费者只能一直等待,直到有工作可做。同时,put方法的阻塞特性也大大地简化了生产者的编码;如果使用一个有界队列,那么当队列充满的时候,生产者就会阻塞,暂不能生成更多的工作,从而给消费者时间来赶进进度。

有界队列是强大的资源管理工具,用来建立可靠的应用程序:它们遏制那些可以产生过多工作量、具有威胁的活动,从而让你的程序在面对超负荷工作时更加健壮。

虽然生产者-消费者模式可以把生产者和消费者的代码相互解耦合,但是它们的行为还是间接地通过共享队列耦合在一起了。

类库中包含一些BlockingQueue的实现,其中LinkedBlockingQueue和ArrayBlockingQueue是FIFO队列,与 LinkedList和ArrayList相似,但是却拥有比同步List更好的并发性能。PriorityBlockingQueue是一个按优先级顺序排序的队列,当你不希望按照FIFO的属性处理元素时,这个PriorityBolckingQueue是非常有用的。正如其他排序的容器一样,PriorityBlockingQueue可以比较元素本身的自然顺序(如果它们实现了Comparable),也可以使用一个 Comparator进行排序。

最后一个BlockingQueue的实现是SynchronousQueue,它根本上不是一个真正的队列,因为它不会为队列元素维护任何存储空间。不过,它维护一个排队的线程清单,这些线程等待把元素加入(enqueue)队列或者移出(dequeue)队列。因为SynchronousQueue没有存储能力,所以除非另一个线程已经准备好参与移交工作,否则put和take会一直阻止。SynchronousQueue这类队列只有在消费者充足的时候比较合适,它们总能为下一个任务作好准备。

生产者-消费者模式同样带来了一些性能方面的提高。生产者和消费者可以并发地执行,如果一个受限于I/O,另一个受限于CPU,那么并发执行的全部产出会高于顺序执行的产出。

————
Deque是一个双端队列,允许高效地在头和尾部分别进行插入和移除。实现有ArrayDeque和LinkedBlockingDeque。
正如阻塞队列适用于生产者-消费者模式一样,双端队列使它们自身与一种叫做窃取工作(work stealing)的模式相关联。一个消费者生产者设计中,所有的消费者只共享一个工作队列;在窃取工作的设计中,每一个消费者都有一个自己的双端队列。如果一个消费者完成了自己双端队列中的全部工作,它可以窃取其他消费者的双端队列中的末尾任务。因为工作者线程并不会竞争一个共享的任务队列,所以窃取工作模式比传统的生产者-消费者设计有更佳的可伸缩性;大多数时候它们访问自己的双端队列,减少竞争。当一个工作者必须要访问另一个队列时,它会从尾部截取,而不是从头部,从而进一步降低对双端队列的争夺。… 阅读全文

MySQL主从同步机制及同步中的问题处理

  categories:mysql资料  tags:  author:

来源:互联网

 

在大型网站架构中,MySQL主从配置是必不可少的,尤其对于Drupal这样数据库访问频繁的框架极为重要。基本的MySQL主从配置大家都比较熟悉,但是在主从配置的结构中,由于多种原因,主从配置经常出现无法同步,以及MySQL由于主从配置的原因而崩溃或者Down机,这里就本人的经验做一些简单介绍。

MySQL主从配置的搭建
具体步骤:
1. 安装MySQL。首先要在两台服务器上安装MySQL,完成之后应该确认能否两台服务器能否互相访问。 这是因为缺省的my.cnf设置有
bind-address = 127.0.0.1,这条语句应该被注释掉。
2. 创建账号。数据库中缺省的帐户的host值是localhost,所以应该创建一个可以远端访问的帐号。比如:root@’%’ or root@10.x.x.x
3. 配置主Server。
在主服务器(数据库源)上的my.cnf配置[mysqld]之后加入如下条目:

log_bin = /var/log/mysql/mysql-bin.log
server-id = 1 //1代表主数据库(源) 2代表辅数据库(目的)
binlog_do_db = testmirror //要做同步的数据库名字,可以是多个数据库,之间用分号分割。

4. 配置从Server。

在辅服务器上的my.cnf中加入如下内容

server-id = 2 //2代表辅
master-host = xx.xx.xx.xx 
阅读全文

Nginx ngx_http_autoindex_module模块基本指令整理

  categories:nginx  tags:  author:

原创文章,转载请指明出处并保留原文url地址

本文主要针对nginx的ngx_http_autoindex_module模块做简单介绍,本文具体包括如下指令:autoindex,autoindex_exact_size,auth_basic_user_file

ngx_http_autoindex_module模块处理‘/’结尾的请求,并且产生一个目录列表。通常当 ngx_http_index_module模块不能发现一个index文件时将请求传递给本模块。

Example Configuration

location / {

autoindex on;

}

Nginx原文:

The ngx_http_autoindex_module module processes requests ending with the slash character (‘/’) and produces a directory listing. Usually a request is passed to the ngx_http_autoindex_module module when the

阅读全文

集合框架 Queue篇(3)—ConcurrentLinkedQueue

  categories:资料  tags:  author:

来源:互联网

Queue

————
1.ArrayDeque,
2.PriorityQueue,
3.ConcurrentLinkedQueue,

4.DelayQueue,
5.ArrayBlockingQueue,
6.LinkedBlockingQueue,
7.LinkedBlockingDeque
8.PriorityBlockingQueue,
9.SynchronousQueue
————

—————————————

ConcurrentLinkedQueue(基于链表的无界线程安全队列)

提供了高效的、可伸缩的、线程安全的非阻塞FIFO队列。

先来了解一下AtomicReferenceFieldUpdater的API:

public abstract class AtomicReferenceFieldUpdater<T,V> extends Object
基于反射的实用工具,可以对指定类的指定 volatile 字段进行原子更新。该类用于原子数据结构,该结构中同一节点的几个引用字段都独立受原子更新控制。例如,树节点可能声明为

class Node {
private volatile Node left, right;

private static final AtomicReferenceFieldUpdater leftUpdater … 阅读全文




快乐成长 每天进步一点点      京ICP备18032580号-1