Nginx 安装和配置方法
nginx(发音为“engine x”)是一个免费的开源 Web 服务器,由俄罗斯软件工程师 Igor Sysoev 编写。自 2004 年公开推出以来,nginx 一直专注于高性能、高并发和低内存使用。Web 服务器功能之上的附加功能,如负载平衡、缓存、访问和带宽控制,以及与各种应用程序有效集成的能力,有助于使 nginx 成为现代网站架构的理想选择。目前 nginx 是 Internet 上第二受欢迎的开源 Web 服务器。
概述
如前所述,nginx 代码库由一个核心和许多模块组成。nginx的核心负责提供web服务器、web和邮件反向代理功能的基础;它支持使用底层网络协议,构建必要的运行时环境,并确保不同模块之间的无缝交互。但是,大多数特定于协议和应用程序的功能是由 nginx 模块完成的,而不是核心。
在内部,nginx 通过管道或模块链处理连接。换句话说,对于每一个操作,都有一个模块在做相关的工作;例如,压缩、修改内容、执行服务器端包含、通过 FastCGI 或 uwsgi 协议与上游应用程序服务器通信,或与 memcached 通信。
有几个 nginx 模块位于核心和真正的“功能”模块之间。这些模块是 http和mail。这两个模块在核心组件和低级组件之间提供了额外的抽象级别。在这些模块中,实现了对与相应应用层协议(如 HTTP、SMTP 或 IMAP)相关联的事件序列的处理。结合nginx核心,这些上层模块负责维护对各个功能模块的正确调用顺序。虽然 HTTP 协议目前作为http模块的一部分实现,但由于需要支持 SPDY 等其他协议(请参阅“SPDY:更快网络的实验性协议“)。
功能模块可以分为事件模块、阶段处理程序、输出过滤器、变量处理程序、协议、上游和负载均衡器。尽管事件模块和协议也用于mail. 事件模块提供特定的操作系统相关的事件通知机制,如kqueue或epoll。nginx 使用的事件模块取决于操作系统的能力和构建配置。协议模块允许 nginx 通过 HTTPS、TLS/SSL、SMTP、POP3 和 IMAP 进行通信。

安装方法
配置文件 /etc/nginx/nginx.conf
nginx 配置保存在许多纯文本文件中,这些文件通常位于/etc/nginx/或 /etc/local/nginx/. 主配置文件通常称为 nginx.conf. 为了保持整洁,部分配置可以放在单独的文件中,这些文件可以自动包含在主文件中。所有与 nginx Web 服务器行为相关的配置都应该驻留在一组集中的配置文件中。
配置文件最初由主进程读取和验证。nginx 配置的编译只读形式可供worker进程使用,因为它们是从主进程派生的。配置结构由通常的虚拟内存管理机制自动共享。
nginx 配置有几个不同的上下文用于main, http, server, upstream, location(也 mail用于邮件代理)指令块。上下文永远不会重叠。例如,没有将 location块放在main指令块中这样的事情。此外,为了避免不必要的歧义,没有像“全局 Web 服务器”配置这样的东西。nginx 配置旨在简洁且符合逻辑,允许用户维护包含数千条指令的复杂配置文件。在一次私人谈话中,Sysoev 说,“全局服务器配置中的位置、目录和其他块是我在 Apache 中不喜欢的功能,所以这就是为什么它们从未在 nginx 中实现的原因。”
配置语法、格式和定义遵循所谓的 C 风格约定。这种制作配置文件的特殊方法已经被各种开源和商业软件应用程序使用。根据设计,C 风格的配置非常适合嵌套描述,具有逻辑性并且易于创建、阅读和维护,并且受到许多工程师的喜爱。nginx 的 C 风格配置也可以很容易地自动化。
配置文件最初由主进程读取和验证。nginx 配置的编译只读形式可供worker进程使用,因为它们是从主进程派生的。配置结构由通常的虚拟内存管理机制自动共享。
nginx 配置有几个不同的上下文用于main, http, server, upstream, location(也 mail用于邮件代理)指令块。上下文永远不会重叠。例如,没有将 location块放在main指令块中这样的事情。此外,为了避免不必要的歧义,没有像“全局 Web 服务器”配置这样的东西。nginx 配置旨在简洁且符合逻辑,允许用户维护包含数千条指令的复杂配置文件。在一次私人谈话中,Sysoev 说,“全局服务器配置中的位置、目录和其他块是我在 Apache 中不喜欢的功能,所以这就是为什么它们从未在 nginx 中实现的原因。”