nginx/nginx
GitHub: nginx/nginx
全球最流行的开源 Web 服务器和高性能负载均衡器,提供反向代理、API 网关和内容缓存能力。
Stars: 29599 | Forks: 7782
[](https://www.repostatus.org/#active)
[](https://community.nginx.org)
[](/LICENSE)
[](/CODE_OF_CONDUCT.md)
NGINX(发音为 "engine x" 或 "en-jin-eks")是全球最流行的 Web 服务器、高性能负载均衡器、反向代理、API 网关和内容缓存。
NGINX 是免费且开源的软件,根据简化的 [2-clause BSD-like license](LICENSE) 条款分发。
企业发行版、商业支持和培训由 [F5, Inc](https://www.f5.com/products/nginx) 提供。
# 目录
- [工作原理](#how-it-works)
- [模块](#modules)
- [配置](#configurations)
- [运行时](#runtime)
- [下载和安装](#downloading-and-installing)
- [稳定版和主线版二进制文件](#stable-and-mainline-binaries)
- [Linux 二进制安装过程](#linux-binary-installation-process)
- [FreeBSD 安装过程](#freebsd-installation-process)
- [Windows 可执行文件](#windows-executables)
- [动态模块](#dynamic-modules)
- [NGINX 入门](#getting-started-with-nginx)
- [安装 SSL 证书并启用 TLS 加密](#installing-ssl-certificates-and-enabling-tls-encryption)
- [负载均衡](#load-balancing)
- [速率限制](#rate-limiting)
- [内容缓存](#content-caching)
- [从源代码构建](#building-from-source)
- [安装依赖项](#installing-dependencies)
- [克隆 NGINX GitHub 仓库](#cloning-the-nginx-github-repository)
- [配置构建](#configuring-the-build)
- [编译](#compiling)
- [二进制文件和安装位置](#location-of-binary-and-installation)
- [运行和测试已安装的二进制文件](#running-and-testing-the-installed-binary)
- [提问和报告问题](#asking-questions-and-reporting-issues)
- [贡献代码](#contributing-code)
- [更多帮助和资源](#additional-help-and-resources)
- [更新日志](#changelog)
- [许可证](#license)
# 工作原理
NGINX 是一款可安装的软件,为所有主要操作系统和 Linux 发行版提供二进制包。有关兼容系统的完整列表,请参阅 [Tested OS and Platforms](https://nginx.org/en/#tested_os_and_platforms)。
## 模块
NGINX 由单独的模块组成,每个模块通过提供额外的可配置功能来扩展核心功能。有关官方模块的完整列表,请参阅 [nginx documentation](https://nginx.org/en/docs/) 底部的“Modules reference”。
NGINX 模块可以作为静态或动态模块构建和分发。静态模块在构建时定义、编译并分发到生成的二进制文件中。有关动态模块的工作原理以及如何获取、安装和配置它们的更多信息,请参阅 [Dynamic Modules](#dynamic-modules)。
```
nginx -V
```
## 配置
NGINX 具有高度的灵活性和可配置性。软件的配置是通过基于文本的配置文件完成的,这些文件接受称为“[Directives](https://nginx.org/en/docs/dirindex.html)”的参数。有关 NGINX 配置文件工作原理的全面描述,请参阅 [Configuration File's Structure](https://nginx.org/en/docs/beginners_guide.html#conf_structure)。
## 运行时
NGINX 并非作为单个单体进程运行,而是设计为作为进程集合运行,以突破操作系统进程限制实现扩展。它们包括:
- 一个“master”进程,负责维护 worker 进程,以及读取和评估配置文件。
- 一个或多个“worker”进程,负责处理数据(例如 HTTP 请求)。
[worker processes](https://nginx.org/en/docs/ngx_core_module.html#worker_processes) 的数量在配置文件中定义,可以针对给定配置进行固定,也可以自动调整为可用 CPU 核心的数量。在大多数情况下,后一种选项可以在可用系统资源之间最佳地平衡负载,因为 NGINX 旨在将工作高效地分配给所有 worker 进程。
# 下载和安装
按照以下步骤下载并安装预编译的 NGINX 二进制文件。您也可以选择 [build NGINX locally from source code](#building-from-source)。
## 稳定版和主线版二进制文件
NGINX 二进制文件构建并分发为两个版本:稳定版和主线版。稳定版二进制文件从稳定分支构建,仅包含从主线版本反向移植的关键修复。主线版二进制文件从 [master branch](https://github.com/nginx/nginx/tree/master) 构建,包含最新的功能和错误修复。您需要 [decide which is appropriate for your purposes](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#choosing-between-a-stable-or-a-mainline-version)。
## Linux 二进制安装过程
NGINX 二进制安装过程利用特定 Linux 发行版原生的包管理器。因此,首次安装涉及将官方 NGINX 包存储库添加到系统的包管理器中。请按照 [these steps](https://nginx.org/en/linux_packages.html) 使用适合您 Linux 发行版的包管理器下载、验证和安装 NGINX 二进制文件。
### 升级
未来升级到最新版本可以使用相同的包管理器进行管理,而无需手动下载和验证二进制文件。
## FreeBSD 安装过程
有关在 FreeBSD 系统上安装 NGINX 的更多信息,请访问 https://nginx.org/en/docs/install.html
## Windows 可执行文件
主线版和稳定版的 Windows 可执行文件可以在主 [NGINX download page](https://nginx.org/en/download.html) 上找到。请注意,当前 NGINX for Windows 的实现处于概念验证阶段,应仅用于开发和测试目的。有关更多信息,请参阅 [nginx for Windows](https://nginx.org/en/docs/windows.html)。
## 动态模块
NGINX 版本 1.9.11 增加了对 [Dynamic Modules](https://nginx.org/en/docs/ngx_core_module.html#load_module) 的支持。与静态模块不同,动态构建的模块可以在核心 NGINX 二进制文件构建完成后进行下载、安装和配置。[Official dynamic module binaries](https://nginx.org/en/linux_packages.html#dynmodules) 可从与前述步骤中描述的核心 NGINX 二进制文件相同的包存储库中获得。
# NGINX 入门
有关 NGINX 基础知识的简要介绍,请参阅我们的 [Beginner’s Guide](https://nginx.org/en/docs/beginners_guide.html)。
## 安装 SSL 证书并启用 TLS 加密
有关如何为您的 NGINX 安装启用安全流量的快速指南,请参阅 [Configuring HTTPS servers](https://nginx.org/en/docs/http/configuring_https_servers.html)。
## 负载均衡
有关将 NGINX 配置为负载均衡器的快速入门指南,请参阅 [Using nginx as HTTP load balancer](https://nginx.org/en/docs/http/load_balancing.html)。
## 速率限制
请参阅我们的 [Rate Limiting with NGINX](https://blog.nginx.org/blog/rate-limiting-nginx) 博客文章,了解将 NGINX 配置为 API 网关的核心概念概述。
## 内容缓存
请参阅 [A Guide to Caching with NGINX and NGINX Plus](https://blog.nginx.org/blog/nginx-caching-guide) 博客文章,了解如何将 NGINX 用作内容缓存(例如内容分发网络的边缘服务器)的概述。
# 从源代码构建
以下步骤可用于从本仓库中可用的源代码构建 NGINX。
## 安装依赖项
大多数 Linux 发行版需要安装几个依赖项才能构建 NGINX。以下说明特定于 `apt` 包管理器,该管理器在大多数 Ubuntu/Debian 发行版及其衍生版本中广泛可用。
### 安装编译器和 make 实用程序
使用以下命令安装 GNU C 编译器和 Make 实用程序。
```
sudo apt install gcc make
```
### 安装依赖库
```
sudo apt install libpcre3-dev zlib1g-dev
```
## 克隆 NGINX GitHub 仓库
使用您首选的方法将 NGINX 仓库克隆到您的开发目录中。有关更多帮助,请参阅 [Cloning a GitHub Repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)。
```
git clone https://github.com/nginx/nginx.git
```
## 配置构建
在构建 NGINX 之前,您必须使用 [appropriate flags](https://nginx.org/en/docs/configure.html) 运行 `configure` 脚本。这将在您的 NGINX 源代码根目录中生成一个 Makefile,然后可以使用该文件编译具有 [options specified during configuration](https://nginx.org/en/docs/configure.html) 的 NGINX。
从 NGINX 源代码仓库的根目录:
```
auto/configure
```
## 编译
`configure` 脚本成功执行后,将在 NGINX 源代码根目录中生成一个 `Makefile`。要将 NGINX 编译为二进制文件,请从该目录发出以下命令:
```
make
```
## 二进制文件和安装位置
成功编译后,二进制文件将生成在 `
/objs/nginx`。要安装此二进制文件,请从源代码根目录发出以下命令:
```
sudo make install
```
## 运行和测试已安装的二进制文件
要运行已安装的二进制文件,请发出以下命令:
```
sudo /usr/local/nginx/sbin/nginx
```
您可以使用 `curl` 测试 NGINX 操作。
```
curl localhost
```
其输出应以以下内容开头:
```
Welcome to nginx!
```
# 提问和报告问题
有关如何讨论代码库、提出故障排除问题和报告问题的信息,请参阅我们的 [Support](SUPPORT.md) 指南。
# 贡献代码
有关如何贡献代码的信息,请参阅 [Contributing](CONTRIBUTING.md) 指南。
# 更多帮助和资源
- 请参阅 [NGINX Community Blog](https://blog.nginx.org/),获取更多与 NGINX 及相关项目相关的提示、技巧和操作指南。
- 访问 [nginx.org](https://nginx.org/),这是获取所有与 NGINX 项目套件相关的文档、信息和软件的首选来源。
# 更新日志
请参阅我们的 [changelog](https://nginx.org/en/CHANGES) 以跟踪更新。
# 许可证
[2-clause BSD-like license](LICENSE)
更多文档请访问:https://nginx.org/en/docs 标签:API网关, BSD许可证, FreeBSD, HTTP服务器, IMAP, Nginx, POP3, SMTP, SSL/TLS, TCP代理, UDP代理, Unix, Web服务器, Windows支持, 内容缓存, 反向代理, 安全测试工具, 客户端加密, 客户端加密, 微服务架构, 数字足迹, 网络基础设施, 负载均衡, 运维工具, 进程监控, 邮件代理