技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Apache
    在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好Nginx本身提供了很好的调试机制,主要包括以下几个方面。 1、Core文件 默认情况下,编译Nginx是带上-g选项的,这就意味着我们可以使用gdb进行调试,以跟踪具体的错误原因。使用Nginx自身带有的两个配置选择就可以轻松配置,使它在Crash的时...
    事件循环这个概念貌似在windows编程中提得更多,Linux程序却很少提及这个概念。本文所提及的事件循环其实就是worker cycle,由于此处将关注的不再是worker进程,而是worker进程在循环过程中关于事件处理的环节,因此就盗用了事件循环这个概念。在具体看代码前,先看一下这个“循环”的概貌: 经过前面相关博文的介绍,我们了解到master进程创建好一个worker进程后,worker进程还会进行一个初始化工作,然后才会陷入“死”循环中。...
    因为一些需要,我也开始涉及nginx的模块开发,在看了一些资料后,写了自己第一个nginx模块。 其实nginx模块开发还算比较容易,网上开源的模块已经很多,都可以借鉴,令我震惊的是OAuth的模块都有。 nginx模块比较起来一些后端语言的实现,最重要的特点就是速度快了,这个无可厚非,nginx模块与apache的区别就是,apache是加载so模块,而nginx是直接将模块编译到主程序里。在我的简单测试下,一个业务逻辑非常简单的模块,可以达到1...
    Nginx的高性能应该算是事件驱动的功劳。Nginx事件处理的相关代码位于src/event目录中,事件驱动是Nginx的核心,所以代码量相对也比较大。事件驱动初始化的过程主要由下图中的三步组成。 第一步:解析配置文件的初始化 在Nginx的启动初始化过程中,将调用ngx_conf_parse()解析配置文件,此过程将遇到类似如下的配置项: events { worker_connections 20480; } 此处的events是一个block指令,在它下面还可以配置很多其他的指令,比如...
    前面单独分析了master进程和worker的工作情况,本文就大概看一下master进程和worker进程之间是如何使用channel来完成通信的。这部分实现的源码主要分布于src/os/unix/channel.h和channel.c两个文件中。实现极其简单,没有什么复杂的逻辑。下面,我绘制了一个简单的master进程和worker进程间的关系,图中的箭头符号指出数据是由master进程传给worker进程,而没有从worker到master;这是因为channel不是一个普通的数据传输管道,在Ng...
    在Nginx启动初始化过程(一)中提到main函数会调用ngx_init_cycle()初始化一个全局cycle变量,本文就来看看这个ngx_init_cycle()函数究竟做了哪些初始化工作。ngx_cycle_t结构类型被定义在src/core/ngx_cycle.h文件中,多达23个成员变量(nginx-0.7.67),由于ngx_init_cycle()函数的代码多达近800行,绝对算大函数了(当然,我也相信还有更加变态的函数,将整个世界都写到一个函数中的情况也是有可能的),在此就挑一些相对关键的...
    Nginx的启动初始化在src/core/nginx.c的main函数中完成,当然main函数是整个Nginx的入口,除了完成启动初始化任务以外,也必定是所有功能模块的入口之处。Nginx的初始化工作主要围绕一个类型为ngx_cycle_t类型的全局变量(cycle)展开。下面具体看一下main函数为Nginx的启动过程做了哪些初始化方面的事情。(以下代码段都是顺序从main函数中摘取出来的, 对照源码阅读可能更易明白) main函数做的第一件事情就是对参数选项进行处理...
    本文着手分析一下worker进程的情况。首先找到worker进程的入口地方――ngx_worker_process_cycle。这个函数不光是worker进程的入口函数,同时也是worker进程循环工作的主体函数,看函数名含有一个cycle嘛。进入这个cycle函数,第一件事就是调用ngx_worker_process_init(cycle, 1);对worker进程进行初始化操作。先看看这个worker进程的初始化过程。
    1.时区设置有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。 SetEnv TZ Australia/Melbourne   2. 搜索引擎友好的301永久转向方法为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。 Redirec...
    手里有个前端自己做cdn的服务器,结果发现进出流量相等,这是个诡异的事情,因为一般来说,做前端缓存的机器,流量基本上很长时间里都是出多进少的。 一开始的时候,是nginx做的nginx_cache,发现进出流量相等后,换上了squid 3.0,使用命令: squidclient -p 8088 mgr:info (启在8088) 发现如图所示的几个命中率,相当低下,一般的WEB服务器缓存30-60%是正常的,而CDN作用的应该说80%以上才是正...
    Nginx分为Single和Master两种进程模型,Single模型即为单进程方式工作,具有较差的容错能力,不适合生产之用。Master模型即为一个master进程+N个worker进程的工作方式。生产环境都是用master-worker模型来工作。本文着重分析Nginx的master进程做了哪些事情,它是如何管理好各个worker进程的。在具体分析代码之前,先附上一张master进程的全貌图: 我们知道在main函数中完成了Nginx启动初始化过程,启动初始化过程中的一个重要环节...
    当我们使用 Squid 是不是常常会有个问题,就是怎么查文件是否存在。大家是怎么查的。。。我想大多都是使用 wget 来查。wget -S 如果显示 HIT 就是文件从 Cache 中取的,不是从源网站取的。但这个过程非常慢,因为如果是大量的文件,比如 100W 的文件要查怎么办。。。都下载一次?
    工作中遇到一个页面,该页面是不能cache的,但是其http头是这么写的:Cache-Control: max-age=0Pragma: no-cacheCache-Control: post-check=0, pre-check=0在我的IE8中,该页面是被cache了一小段时间的,不知道是按照时间还是命中次数cache的,反正访问几次(5/6次吧)cache之后,就重新请求了。通过fiddler添加cache-control来调试(这个页面不是我们自己的),发现添加了:Cache-control: no-cache或Cache-control: no-store或...
    AddType 是与类型表相关的,描述的是扩展名与文件类型之间的关系,如:AddType application/x-x509-ca-cert .crt说明 .crt 扩展名的文件就是application/x-x509-ca-cert类型的; 在内容协商时,如果客户端需要是application/x-x509-ca-cert类型的,就将 .crt结尾的资源返回注意: 经过内容协商的资源,在http相应头中有相应的Content-Location说明,如:GET /a HTTP/1.1......Content-Location: a.php...AddHandler 说明什么样的...
    该功能使得服务器可以根据agent指定的http头来选择合适的资源。涉及的http头包括: Accept-*涉及的Apache中的知识: 类型表1。 需要模块 : modules/mod_negotiation.so2。 需要在目录的Options中添加: MultiViews;如: Options FollowSymLinks MultiViews Indexes3。 参考文档: http://apache.jz123.cn/content-negotiation.html4。 该功能可能会影响到rewrite。
    对于Apache来说, 如果URL和PATH_INFO中出现%2f(/)或者%5c(\\), 会被认为这是个不合法的请求, Apache将会直接返回404结束. 对于使用mod_rewrite做URL改写的情况来说, 可能会比较容易遇到这个问题. 解决的办法有两种. 1. 进行俩次encode, /变为%252f 2. 在apache的配置中增加: AllowEncodedSlashes On 具体可以参看:http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes
    nginx.conf控制指定的代理ip和ip访问的设置手记
    最近因为python升级到了2.7导致mod_python不能用,所以自己电脑上的apache一直启动不起来,趁着周末有时间,抓紧搞一下。 在网上搜了一下,发现mod_python已经停止维护了,而替代他的是mod_wsgi,...
    今天在一个 Apache 上通过 mod_fastcgi 开了 redmine,使用的时候发现访问速度非常之慢,打开一个页面一般需要十几秒,开始以为是网速的问题,但是同一台服务器上其它的网站访问非常快。最开始以为是 rails 或者 mysql 的性能问题,但是打开 production.log 看了一眼,发现它们加起来一般占用仅几十毫秒的时间。Firefox 状态栏一直在显示正在加载,到底在干什么?用 "tail -f" 查看 apache 的 access_log,看到每次打开一个 redmin...
    有时候需要连接某机器,但是直接连被屏蔽了,虽然可以用代理来搞定一些应用程序,但是很多程序不支持代理,或者只支持某些类型的代理,这时候就可以试一试 proxychains 这个软件了。比如:svn 只支持 HTTP 代理,不支持 socks4 代理,svn+ssh 方式也挺麻烦的,可以用一个 socks 转 HTTP 代理软件的,需要在 ~/.subversion/servers 利配置,用 proxychains 这个东西就更方便。proxychains 用起来就像 time, strace, ccache 等命令那...
[ 共110篇文章 ][ 第3页/共6页 ][ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ]
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1