> For AI agents: the complete documentation index is available at https://docs.vps.town/llms.txt, the full documentation bundle is available at https://docs.vps.town/llms-full.txt.

# 在 VPS.Town 安装 Nginx 完全指南

:::tip 温馨提示

本文由用户 `xiaoqingnian-` 撰写，并已加入 `VPS.Town 优秀原创文章激励计划`，本站享有完整版权，未经允许不得转载。

本文已通过 [VPS.Town 社区文章投稿及奖励规则 (试行稿)](https://docs.vps.town/kb/community.md) 审核，并获得 `--` 奖励。

:::

:::details 📖 本文目录

[](#1-nginx-简介)[](#2-安装准备)[](#21-系统要求)[](#22-安装前的准备工作)[](#3-安装方法)[](#31-使用包管理器安装-五星推荐)[](#32-源代码编译安装)[](#33-验证安装)[](#4配置-nginx)[](#41-目录结构)[](#42-常见配置场景)[](#5-nginx-管理)[](#51-服务控制)[](#6-extra)[](#refer)
:::

## 1. Nginx 简介

Nginx (发音为 "engine-x") 是一个高性能的开源 Web 服务器和反向代理服务器。它因其高效、稳定、低内存消耗和高并发连接处理能力而闻名。

**主要用途：**

- Web 服务器：提供静态内容，如 HTML、CSS、JavaScript 等
- 反向代理：将客户端请求转发到后端服务器
- 负载均衡器：在多个后端服务器之间分配流量
- 缓存服务器：缓存静态内容，减轻后端压力
- API 网关：管理 API 请求和响应

![nginx-architecture](/assets/images/c187b4412ff5/nginx-architecture.svg)

## 2. 安装准备

### 2.1 系统要求

Nginx 可以在多种操作系统上运行，包括： Linux (各种发行版)、FreeBSD、macOS、Windows。

### 2.2 安装前的准备工作

在安装 Nginx 前，请确保系统已更新并安装必要的依赖包：

```bash
# Debian/Ubuntu 系统
sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

# CentOS/RHEL 系统
sudo yum update
sudo yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
```

我更偏爱 Debian 一点，以我的本地环境(Debian 12.0)为例，给出安装截图：
![nginx-architecture](/assets/images/c187b4412ff5/nginx-base.2.2.png)

## 3. 安装方法

### 3.1 使用包管理器安装 (**五星推荐**)

Debian/Ubuntu

```bash
sudo apt update
sudo apt install -y nginx
```

CentOS/RHEL

```bash
sudo yum install epel-release
sudo yum install nginx
```

安装完记的去设置开机启动，参见[Nginx 管理](#5-nginx-管理)。

### 3.2 源代码编译安装

源码安装可以个性化选择想要的模块，集成自己想要的第三方模块，还可以针对特定硬件做优化。
但对于我们普通用户来说可以但没必要。以前玩树莓派的时候编过，现在没有热情了没有再完整编译安装过，这里也不做推荐。只是为了文档完整性，作为补充。

![nginx-source-install](/assets/images/c187b4412ff5/nginx-source-install.svg)

步骤 1:下载源码包

```bash
# 创建下载目录
mkdir -p ~/nginx-build && cd ~/nginx-build

# 下载最新稳定版
wget http://nginx.org/download/nginx-1.24.0.tar.gz
```

步骤 2: 解压源码包

```bash
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
```

步骤 3:配置编译选项

```bash
./configure \
  --prefix=/usr/local/nginx \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_realip_module \
  --with-http_gzip_static_module \
  --with-http_stub_status_module
```

步骤 4: 编译和安装

```bash
# 编译
make

# 安装
sudo make install
```

### 3.3 验证安装

```bash
# 检查 Nginx 版本
/usr/local/nginx/sbin/nginx -v

# 检查配置文件语法
/usr/local/nginx/sbin/nginx -t
```

![nginx-architecture](/assets/images/c187b4412ff5/nginx-base.3.3.png)

## 4.配置 Nginx

### 4.1 目录结构

安装完成后， Nginx 的主要目录结构如下：

| 目录/文件                                                    | 描述       |
| -------------------------------------------------------- | -------- |
| /etc/nginx/ 或 /usr/local/nginx/conf/                     | 配置文件目录   |
| /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf | 主配置文件    |
| /etc/nginx/sites-available/                              | 可用站点配置   |
| /etc/nginx/sites-enabled/                                | 已启用站点配置  |
| /var/log/nginx/ 或 /usr/local/nginx/logs/                 | 日志文件目录   |
| /usr/share/nginx/html/ 或 /usr/local/nginx/html/          | 默认网站文件目录 |

### 4.2 常见配置场景

静态网站配置

```bash
nginxserver {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
```

反向代理配置

```bash
nginxserver {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
```

负载均衡配置

```bash
nginxupstream backend {
    server backend1.example.com weight=3;
    server backend2.example.com;
    server backend3.example.com;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
    }
}
```

## 5. Nginx 管理

### 5.1 服务控制

系统服务方式 (systemd)

```bash
# 启动 Nginx
sudo systemctl start nginx

# 停止 Nginx
sudo systemctl stop nginx

# 重启 Nginx
sudo systemctl restart nginx

# 重新加载配置
sudo systemctl reload nginx

# 查看状态
sudo systemctl status nginx

# 设置开机启动 (建议开启)
sudo systemctl enable nginx
```

手动控制

```bash
# 启动 Nginx
sudo nginx

# 停止 Nginx
sudo nginx -s stop

# 优雅停止（等待请求处理完毕）
sudo nginx -s quit

# 重新加载配置
sudo nginx -s reload

# 检查配置文件语法
sudo nginx -t
```

## 6. Extra

还有一些别的配置，如日志管理， Nginx 性能优化、安全配置，这里暂且不谈，有机会在下一篇我们再聊。

## Refer

[1. Nginx 官方手册](https://nginx.org/)

[2. Nginx Github 仓库](https://github.com/nginx/nginx)
