Skip to content

在 lidong 安装与配置 Nginx

1. Nginx 简介

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

主要用途:

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

nginx-architecture

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 12 为主要示例。Debian 12 安装环境

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 管理

3.2 源代码编译安装

源码安装可精确选择模块,并针对特定硬件或运行环境进行优化,但维护成本更高。若没有明确的定制需求,建议优先使用发行版包管理器;以下内容作为进阶参考。

nginx-source-install

步骤 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

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
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;

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

反向代理配置

bash
server {
    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
upstream 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. 进阶方向

生产环境还应根据业务规模完善日志轮转、性能调优、安全响应头、访问控制与监控告警。

参考资料

1. Nginx 官方手册

2. Nginx Github 仓库

lidong 文档中心 · 清晰、可靠、持续维护