nginx与正向代理

2013年1月12日 5 条评论 6,048 次浏览

对于nginx的介绍,往往都会以这么一句评价作为开头:nginx,是一个功能强大的高性能Web和反向代理服务器,……。那么,作为反向代理概念的另一面,正向代理,nginx是否同样支持呢?在解答这个问题之前,需要先搞清楚何谓正向代理,何谓反向代理以及它们之间的联系与差别。 在计算机网络领域,代理服务器也就是充当相互通信双方(按通信请求方client以及通信服务方server两种角色划分)的中间功能媒介的角色,而正向代理和反向代理,只不过是用于对代理服务器在充当中间功能媒介的不同类别的更进一步划分(除了正向代理和反向代理,还有其他类别,具体请看参考1)。即,如果代理服务器充当的是相互通信双方中的client角色,那么就是正向代理。图示如下(来之参考2): 与此相对,如果代理服务器充当的是相互通信双方中的server角色,那么就是反向代理。图示如下(来之参考2): 对此,我们需搞清楚两个问题: 1,所谓正向反向,这个方向性是相对相互通信双方中的client端而言的。 2,要判断一个代理服务器是正向代理还是反向代理,只需检查它在原始双方通信过程中代表着哪一方,替谁干活。 代理服务器的功能有很多,比如在做正向代理时,可以用于代理共享上网,翻(河蟹)墙,掩藏身份(在网易评论里换个火星IP地址,囧)等等;做反向代理时,隐藏服务器端,统一控制,防范攻击,提高服务性能等等。 回到本文的正题:nginx是否支持正向代理? 早在4年前,Igor已经给出了答案:不支持,并且也没有打算在短期内支持。原因是:已经有了非常优秀的正向代理软件,例如squid。 虽然如此,但nginx对正向代理的有限支持还是可以有的,比如对HTTP正向代理的支持(即不支持HTTPS),示例如下(参考2)。 1,编译nginx: #... [阅读更多]

分类: nginx, 源码分析 标签: ,

nginx对Linux native AIO机制的应用(实现篇)

2013年1月12日 没有评论 5,259 次浏览

从前面文章已经了解到,在Linux系统上,要使用native... [阅读更多]

nginx对Linux native AIO机制的应用(配置篇)

2013年1月12日 没有评论 4,003 次浏览

从0.8.11版本开始,nginx开始支持Linux native... [阅读更多]

利用GDB7.0的反向调试(reverse debug)特性调试程序

2013年1月11日 没有评论 3,204 次浏览

同事问到一个问题:假设a函数调用了b函数,并且当前执行点已经进入到b函数,如果想退到a函数来查看程序状态,是否有这样的调试工具?因为2010年在CU上写过一篇博客“利用GDB7.0的反向调试(reverse... [阅读更多]

Linux native AIO与eventfd、epoll的结合使用

2013年1月9日 没有评论 7,533 次浏览

在前面的示例libaio_test.c和native_aio_test.c中,可以看到对磁盘aio请求(本文的aio都指此类)的使用有阻塞等待,这明显之处为对io_getevents()函数(当然,其它函数,比如io_submit()也有一定程度的阻塞)的调用,它会等待并获取已完成的io请求,如果当前没有或少于指定数目的io请求完成,那么就会等待直到timeout。 io_getevents()函数的等待会导致整个进程的阻塞使得程序无法继续向下执行,如果程序还有其它阻塞点,那么有必要想办法把这多处等待合而为一同时进行,从而提高并行性,也就是通常所说的select/epoll等这类多路复用技术。 本文就以epoll为例,介绍一下在linux下,如何把aio结合并应用到epoll机制里。我们知道,epoll机制的最大好处就是它能够在同一时刻对多个文件描述符(通常是由众多套接字形成的描述符集合)进行监听,并将其上发生的读/写(或错误等)事件通知给应用程序,也就是做到时间上的复用。如果能够把aio也放到epoll机制里,即把aio当作epoll机制里的“一路io”,那么就能使得aio与其它可能的等待操作(比如:读/写套接字)共同工作,从而达到时间复用的目的。 作为epoll机制里的“一路io”,需要一个文件描述符来反馈对应的发生事件,而对于纯aio而言,是没有文件描述符作为代表的,因此linux系统上多出了一个eventfd()的系统调用: #include... [阅读更多]

异步I/O之native AIO篇

2013年1月6日 6 条评论 5,747 次浏览

本文介绍Linux下另外一种异步I/O,即由Linux内核实现提供的native... [阅读更多]

异步I/O之glibc AIO篇

2013年1月1日 2 条评论 3,693 次浏览

Linux下可用的异步I/O(以下简称为AIO)有两种,一种由Glibc实现提供,另一种是由Linux内核实现提供,而本文介绍的是glibc内的AIO。 在介绍AIO之前,需要对Linux上的各种不同I/O模型有一个较好的了解,而在这里:http://www.ibm.com/developerworks/cn/linux/l-async/,已经有了很详细的解释,这无需多说。 先来看示例,从感观上来进行认识: /** ... [阅读更多]

哈希函数

2012年12月30日 1 条评论 5,229 次浏览

学计算机的童鞋,应该没有人不清楚什么是哈希函数,在大多数实际项目中,对于哈希函数的选择,往往并不怎么在意,讲究的是能用就行,但在性能追求极致的环境里,哈希函数却还是一个考察重点。 在Web服务器lighttpd里,使用的是一个非常流行的DJB... [阅读更多]

读《远大前程》没写后感

2012年12月30日 没有评论 5,902 次浏览

说来惭愧,《远大前程》借到手已经2个多月了,中间续借了一次,现在还超期了,前段时间去图书馆借《金银岛》时没有顺便把《远大前程》这本书还掉也是因为读后感还没写,结果时到今天,《金银岛》也都已经看完半个月了,关于《远大前程》的读后感还是没有写,嘛,算了,很多事情不必强求,没写就没写吧,也许以后哪天,会想着回过头来再看看,则到时再写吧。等下去还书。 ... [阅读更多]

SPDY的抓包调试

2012年12月16日 3 条评论 6,122 次浏览

SPDY默认运行在SSL安全协议之内,因此对它的抓包调试会比较麻烦,Nginx的SPDY支持没有找到对应的关闭ssl的选项,而Apache的mod-spdy模块有个对应的SpdyDebugUseSpdyForNonSslConnections选项(http://code.google.com/p/mod-spdy/wiki/ConfigOptions),可以设置采用non-SSL运行SPDY,所以这里也就试试它。 因为系统上默认已经有了Apache,所以采用二进制简单安装mod-spdy模块。 1,系统环境: #... [阅读更多]