title: Nginx category: page slug: nginx sortorder: 0721 toc: False sidebartitle: Nginx meta: Nginx 是一个部署普遍的 web 服务器,它同时也可以作为 WSGI Python web 应用的反向代理。 translators: blog.chriscabin.com updated: 2016-08-01 08:00

Nginx

Nginx 是 前 10 万个网站中第二常用的 web 服务器。Nginx 也可以作为 Python WSGI 服务器 或者甚至是其它 web 服务器(例如 Apache)的反向代理,用于处理请求并回传响应。

Python web application deployments rely on Nginx either as a web server or reverse proxy for WSGI servers.

Nginx 是 web 服务器 概念的一种实现。在部署 章节学习这些部分是如何组合在一起的或者查看所有主题的目录

我该使用 Nginx 还是 Apache HTTP 服务器?

让我们认清这两款“竞争”的服务器:它们都是非常棒的开源项目,并且都能够很好地为你的 web 应用部署提供服务。事实上,许多全球顶级的 web 应用在它们许多部署步骤中都同时使用这两款服务器,通过完整的 HTTP 请求—响应周期。

相对于 Apache,我个人使用 Nginx 更为频繁,因为它的配置文件感觉写起来更容易,并且有更少的可选模板。

这也有点懒惰的成分:Nginx 工作得很好,它从不会给我带来问题。所以,我坚持使用我久经沙场的 Ansible 配置管理 文件来设置 Nginx 使用 HTTPS 和 SSL/TLS 证书。

Nginx 安全防护

通过系统包管理器或者源码编译进行标准安装后的默认 Nginx 配置是一个很好的安全基础。 然而,最开始几次尝试设置密码和重定向会让人很疑惑。一个非常好的办法是阅读相关教程来确保你在被 HTTP(S) 配置折磨时避免最常见的安全错误

常见 Nginx 资源

  • 开源应用架构一书 中的 Nginx 章节 详细说明了为何 Nginx 以某种方式扩展构建,并且拥有很棒的部署之旅课程。

  • Nginx 内部:我们如何针对性能和扩展性进行设计 是一篇来自 Nginx 开发者的博客,说明了他们为何相信他们的架构模型要比其它构建 web 服务器的方法更加高效,更具扩展性。

  • 测试驱动 web 服务器配置 是一个非常好的故事,说明了如何反复应用配置变动,例如路由流量到 Piwik 进行web 分析、作为应用后端进行反向代理、以切当的方式终止 TLS 连接。 阅读一个写得很好的软件部署文章可以让人映像深刻,就像这篇来自政府机关的文章,虽然 UK 政府数字服务,还有美国 18F 以及美国数字服务形成了比最典型的机关更为可靠的文化。

  • 针对开发者的 Nginx 介绍 给出了最初几步来配置 Nginx 并运行它。

  • 一个更快的 Web 服务器:用 Nginx 替代 Apache 说明了在某些情况下为了提升性能可以使用 Nginx 替换 Apache。

  • Nginx 对比 Apache:我们的看法 由 Nginx 背后的开发者以第一方视角说明 web 服务器之间的差别。

  • 使用 Nginx 速度限制 说明了如何缓解使用 Nginx 速度限制进行密码暴力猜测尝试的问题。

  • Nginx 使用动态上游 是一篇非常重要的笔记,说明了如果你正在使用 Nginx 作为反向代理,如何使用变化的主机名设置你的上游 WSGI 服务器。

  • Nginx 缓存 说明了如何设置 Nginx 用于缓存 HTTP 请求,这通常可以使用 Varnish 完成,但是也可以使用 proxy_cache 和相关指令交给 Nginx 处理。

  • Nginx web 服务器教程 是最旧但也最好的教程,它说明了如何设置之前版本的 Nginx。

  • Nginx 中使用动态日志格式 说明了在 Nginx 中如何使用 HttpSetMiscModule 模块转换变量,并将输入映射到日志的可控制输出中。作者使用这种技术进行像素追踪,这种方法也可以用于其它目的,例如高级调试。