nginx笔记

  1. 1. 什么是Nginx?
  2. 2. Nginx的安装与基本命令
    1. 2.1. 安装Nginx
    2. 2.2. 常用命令
    3. 2.3. 配置文件结构
  3. 3. 核心功能一:Web服务器
    1. 3.1. 基础配置
    2. 3.2. location路径匹配
    3. 3.3. 自定义错误页面
    4. 3.4. try_files指令
  4. 4. 核心功能二:反向代理
    1. 4.1. 什么是反向代理?
    2. 4.2. 反向代理配置
  5. 5. 核心功能三:负载均衡
    1. 5.1. 负载均衡配置
    2. 5.2. 负载均衡策略

什么是Nginx?

Nginx(engine x)是一个高性能的HTTP和反向代理Web服务器,同时也提供IMAP/POP3/SMTP服务。它以其高并发、低内存消耗和丰富的功能模块而广受欢迎,是目前互联网上使用最广泛的Web服务器之一。

Nginx的核心功能可以概括为三大类:Web服务器反向代理负载均衡。本文将围绕这三个核心功能展开学习。

Nginx的安装与基本命令

安装Nginx

在Ubuntu/CentOS等Linux系统上,可以通过包管理器快速安装Nginx:

1
2
3
4
5
6
# Ubuntu/Debian
sudo apt update
sudo apt install nginx

# CentOS/RHEL
sudo yum install nginx

也可以通过Docker快速运行一个Nginx容器:

1
docker run -d nginx

常用命令

以下是Nginx日常运维中最常用的命令:

命令 说明
nginx -v 查看Nginx版本
service nginx status 查看Nginx运行状态
nginx -t 检查配置文件语法是否正确
nginx -s reload 热加载配置文件(无需重启服务)
nginx -t && nginx -s reload 校验配置并热部署(推荐组合使用)

💡 小技巧:修改配置文件后,建议先用nginx -t检查语法,确认无误后再执行nginx -s reload热加载,避免因配置错误导致服务中断。

配置文件结构

Nginx的主配置文件通常位于/etc/nginx/nginx.conf。在修改配置前,建议先备份原文件:

1
2
mv nginx.conf nginx.conf.bak
touch nginx.conf

Nginx配置采用层级结构,最外层是http块,内部可以包含多个server块,每个server块定义一个虚拟主机服务。通过include /etc/nginx/conf.d/*.conf;可以将配置文件拆分为多个文件,方便管理。

核心功能一:Web服务器

Nginx最基本的功能就是作为Web服务器,处理静态文件请求。

基础配置

一个最简单的Web服务器配置如下:

1
2
3
4
5
6
7
8
9
10
http {
include /etc/nginx/mime.types;

server {
listen 80;
server_name localhost www.example.com;
root /var/www/example;
index index.html;
}
}

配置项说明:

  • listen:指定监听的端口

  • server_name:指定域名或IP地址

  • root:指定网站文件的根目录

  • index:指定默认首页文件(默认为index.html)

访问http://localhost时,Nginx会自动返回$root/index.html文件。

location路径匹配

location指令用于根据请求URI匹配不同的处理规则。匹配优先级从高到低依次为:

匹配方式 语法 示例
精确匹配 location = /path location = /index.html
前缀匹配 location ^~ /path location ^~ /static/
正则匹配 location ~ patternlocation ~* pattern location ~ /video[0-9]\.mp4
普通前缀 location /path location /app

自定义错误页面

可以通过error_page指令自定义404、500等错误页面:

1
2
3
4
server {
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}

try_files指令

try_files指令按顺序检查文件或目录是否存在,常用于单页应用(SPA)的路由处理:

1
2
3
location / {
try_files $uri $uri/ /index.html;
}

核心功能二:反向代理

什么是反向代理?

  • 正向代理:客户端通过代理服务器访问目标资源(如科学上网工具)

  • 反向代理:客户端访问代理服务器,代理服务器将请求转发给后端的真实服务器

反向代理隐藏了真实服务器的信息,客户端只知道代理服务器的地址。

反向代理配置

将请求代理到本地3000端口运行的服务:

1
2
3
4
5
location /api {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

反向代理的优势

  • 隐藏后端服务器的真实IP和端口

  • 提供统一的入口,便于安全管理

  • 可以结合缓存、限流等功能提升性能

核心功能三:负载均衡

当单台服务器无法承受高并发访问时,可以通过Nginx的负载均衡功能将请求分发到多台后端服务器。

负载均衡配置

使用upstream指令定义一组后端服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13
http {
upstream backend-servers {
server 192.168.1.10:3000 weight=2;
server 192.168.1.11:3000 weight=6;
server 192.168.1.12:3000 backup;
}

server {
location / {
proxy_pass http://backend-servers;
}
}
}

负载均衡策略

Nginx支持多种负载均衡算法:

策略 说明
轮询(默认) 按顺序轮流分配请求
权重(weight) 根据服务器性能分配不同权重,权重越大分配越多
IP哈希(ip_hash) 根据客户端IP分配,同一IP始终访问同一台服务器
最少连接(least_conn) 将请求分配给当前连接数最少的服务器
备份(backup) 标记为备用服务器,其他服务器不可用时才启用