您现在的位置:首页
--> 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启动初始化过程(一)中提到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%以上才是正...
当我们使用 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访问的设置手记
今天在一个 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 等命令那...
近3天十大热文
-
[66] Java开发岗位面试题归类汇总
-
[65] IOS安全–浅谈关于IOS加固的几种方法
-
[62] android 开发入门
-
[61] 【社会化设计】自我(self)部分――欢迎区
-
[61] Go Reflect 性能
-
[60] Oracle MTS模式下 进程地址与会话信
-
[59] 如何拿下简短的域名
-
[55] 图书馆的世界纪录
-
[46] find命令的一点注意事项
-
[45] WEB系统需要关注的一些点
赞助商广告