Skip to content
 

Nginx 的核心概念

更新: 11/26/2025字数: 0 字 时长: 0 分钟

Nginx是一个高性能的 HTTP 和反向代理服务器,以其 高并发处理能力低内存消耗模块化架构闻名。根据 W3Techs 数据,全球约34.2% 的网站使用Nginx 作为 Web服务器或反向代理。

Nginx 安装

下载链接:http://nginx.org/en/download.html

我安装的是:1.16.1 版本的,如下:

在这里插入图片描述

然后解压到一个指定的文件夹就行;双击根目录的 nginx 图标 ,然后再访问 http://localhost/若出现以下页面表示启动成功:

在这里插入图片描述

也可以在任务管理器中查看是否启动成功:

在这里插入图片描述

一、常用命令

目的Linux / macOSWindows(exe 同级目录)
启动nginxstart nginx 或双击 nginx.exe
优雅停止nginx -s quitnginx -s quit
立即停止nginx -s stopnginx -s stop
重载配置热更新nginx -s reloadnginx -s reload
重新打开日志(切割日志用)nginx -s reopennginx -s reopen
测试配置是否正确nginx -tnginx -t
打印配置信息nginx -Tnginx -T
指定配置文件启动nginx -c /path/nginx.confnginx -c D:\conf\nginx.conf
指定前缀目录nginx -p /opt/nginx/nginx -p D:\nginx\
查看版本 & 编译参数nginx -Vnginx -V
查看帮助nginx -hnginx -h

一行搞定常见组合:

bash
nginx -t && nginx -s reload   # 先检查再热重载

提示

Windows 下若提示找不到 nginx.pid,先 start nginx 确保进程已启动,再执行 nginx -s reload/quit 即可。

如图:

Nginx 日志存放位置:

访问日志:/nginx/log/nginx/access.log
错误日志:/nginx/log/nginx/error.log

二、核心功能

功能描述典型应用场景
正向代理代理客户端请求,隐藏真实客户端信息企业内网访问外网、爬虫代理
反向代理代理服务器端响应,隐藏真实服务器信息网站接入层、API 网关
负载均衡将流量分发到多个后端服务器高并发网站、微服务架构
动静分离静态资源与动态请求分开处理

1. 正向代理和反向代理

1.1 正向代理

正向代理是指客户端配置代理服务器,通过代理服务器访问目标服务器。客户端并不知道实际的目标服务器,只能通过代理服务器进行访问。

核心特点

  1. 客户端配置:需在客户端显式设置代理地址
  2. 隐私保护:服务器无法获取真实客户端 IP
  3. 访问控制:企业常用于限制员工上网行为

典型场景

  • 企业内网访问外网
  • 爬虫 IP 轮换
  • 科学上网工具

配置示例

nginx
server {
    listen 3128;
    resolver 8.8.8.8;

    location / {
        proxy_pass http://$http_host$request_uri;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

1.2 反向代理

反向代理是指客户端直接访问代理服务器,代理服务器再将请求转发给目标服务器。客户端并不知道实际的目标服务器,只能通过代理服务器进行访问。

核心特点

  1. 客户端无感知:用户直接访问代理地址
  2. 服务器保护:隐藏后端服务器拓扑
  3. 功能扩展:支持 SSL 卸载、缓存等

典型场景

  • 网站接入层

  • CDN 边缘节点

  • API 网关

    配置示例

nginx
upstream backend {
    server 10.0.0.1:8080 weight=3;
    server 10.0.0.2:8080;
}
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

2. 负载均衡

见这篇文章: 负载均衡策略

3. 动静分离

动静分离是指将网站的静态资源(如HTML、CSS、JS、图片等)和动态内容(如 PHP、Java 生成的页面)分开处理的技术方案。通过Nginx实现动静分离,可以显著提高网站的性能和并发处理能力。

为什么要做动静分离?

1、性能优化:静态资源由 Nginx 直接返回,效率比应用服务器高 10 倍以上
2、减轻后端压力:减少应用服务器的请求量,节省 CPU 资源
3、提升用户体验:静态资源加载更快,页面响应更迅速
4、便于扩展:静态资源可以单独做 CDN 加速

3.1 动静分离的实现原理

3.2 Nginx 配置实战

1、基础配置示例

nginx
server {
    listen 80;
    server_name example.com;

    # 静态资源目录
    location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|woff|ttf)$ {
        root /var/www/static;
        expires 30d;  # 缓存30天
        access_log off;
    }

    # 动态请求转发
    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
    }
}

2、进阶优化配置

nginx
# 静态资源压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;

# 静态资源缓存控制
location ~* \.(jpg|png|gif)$ {
    expires 365d;
    add_header Cache-Control "public, no-transform";
}

# 禁止访问隐藏文件
location ~ /\. {
    deny all;
}

动静分离的目录结构建议

/var/www/
├── static/            # 静态资源
│   ├── css/
│   ├── js/
│   ├── images/
│   └── fonts/
└── dynamic/           # 动态程序
    ├── index.php
    └── api/

3.3 为什么静态资源由 Nginx 直接返回回比较快

架构层级更少,处理路径更短。

Nginx 直接返回:客户端 → Nginx → 硬盘文件 → 返回客户端(仅需 2 步跳转)

后端服务器处理:客户端 → Nginx → 后端程序 → 框架处理 → 读取文件 → 返回 Nginx → 返回客户端(至少 5 步跳转,链路更长)

📌 类比:就像去图书馆借书,Nginx是管理员直接拿书给你,后端服务器是让管理员先问馆长,馆长再找图书管理员,最后才把书给你。

我见青山多妩媚,料青山见我应如是。