其实这两年为 Nginx 世界做了这么多的事情,一直想通过一系列教程性的文章把我的那些工作成果和所学所知都介绍给更多的朋友。现在终于下决心在新浪博客 http://blog.sina.com.cn/openresty 上面用中文写点东西,每一篇东西都会有一个小主题,但次序和组织上就不那么讲究了,毕竟并不是一本完整的图书,或许未来我会将之整理出书也不一定。
我现在编写的教程是按所谓的“系列”来划分的,比如首先连载的“Nginx 变量漫谈”系列。每一个系列基本上都可以粗略对应到未来出的 Nginx 书中的一“章”(当然内部还会重新组织内容并划分出“节”来)。我面向的读者是各个水平层次的 Nginx 用户,同时也包括未使用过 Nginx 的 Apache、Lighttpd 等服务器的老用户。
我只保证这些教程中的例子至少兼容到 Nginx 0.8.54
,别用更老的版本来找我的错处,我一概不管,毕竟眼下最新的稳定版已经是 1.0.10
了。
凡在教程里面提到的模块,都是经过生产环境检验过的。即便是标准模块,如果没有达到生产标准,或者有重要的 bug,我也不会提及。
我在教程中会大量使用非标准的第三方模块,如果你怕麻烦,不愿自己一个一个从网上下载和安装那些个模块,我推荐你下载和安装我维护的 ngx_openresty
这个软件包:
教程里提及的模块,包括足够新的 Nginx 稳定版核心,都包含在了这个软件包中。
我在这些教程中遵循的一个原则是,尽量通过短小精悍的实例来佐证我陈述的原理和观点。我希望帮助读者养成不随便听信别人现成的观点和陈述,而通过自己运行实例来验证的好习惯。这种风格或许也和我在 QA 方面的背景有关。事实上我在写作过程中也经常按我设计的小例子的实际运行结果,不断地对我的理解以及教程的内容进行修正。
对于有问题的代码示例,我们会有意在排版上让它们和其他合法示例所有区别,即在问题示例的每一行代码前添加问号字符,即(?
),一个例子是:
? server { ? listen 8080; ? ? location /bad { ? echo $foo; ? } ? }
未经我的同意,请不要随便转载或者以其他方式使用这些教程。因为其中的每一句话,除了特别引用的“名句”,都是我自己的,我保留所有的权利。我不希望读者转载的另一大原因在于:转载后的拷贝版本是死的,我就不能再同步更新了。而我经常会按照读者的反馈,对已发表的老文章进行了大面积的修订。
我欢迎读者多提宝贵意见,特别是建设性的批评意见。类似“太烂了!”这样无聊中伤的意见我看还是算了。
所有这些文章的源都已经放在 GitHub 网站上进行版本控制了:
http://github.com/agentzh/nginx-tutorials/
源文件都在此项目的 zh-cn/
目录下。我使用了一种自己设计的 Wiki
和 POD
标记语言的混合物来撰写这些文章,就是那些 .tut
文件。欢迎建立分支和提供补丁。
本教程适用于 Kindle、iPad/iPhone、Sony 等电子阅读器的 .mobi
、.epub
以及 .pdf
等格式的电子书文件可以从下面这个位置下载:
章亦春 (agentzh) 于福州家中
2011 年 11 月 30 日