Skip to content

Nginx(2004) ​

关键词:网关、反向代理

一、Nginx 是什么? ​

1.1 官方定义 ​

Nginx 是一个高性能 Web 服务器、反向代理服务器、负载均衡器。

翻译成人话:

Nginx 是一个:

  • 🌐 网站服务器(放网页)
  • 🚦 流量调度员(转发请求)
  • ⚖ 负载均衡器(分流给多台服务器)
  • 🛡 网关(挡攻击、限流)

1.2 为什么会有 Nginx? ​

早期互联网用的是 Apache:

  • 一个请求一个进程
  • 并发一高 → 服务器爆炸
  • 内存占用巨大

2004 年,俄罗斯工程师 Igor Sysoev 发明 Nginx:

  • 专门解决: 👉 高并发、低内存、稳定运行

现在全球:

  • 超过 50% 网站在用 Nginx
  • 微信、阿里、B 站、抖音 都在用

二、Nginx 能干什么?(核心功能) ​

2.1 Web 服务器 ​

托管网站:

浏览器 → Nginx → 返回 HTML 页面

比如:

  • 公司官网
  • 后台管理系统
  • H5 页面

2.2 反向代理(最重要) ​

什么是代理? ​

你访问:

www.company.com

实际:

Nginx → 后端服务(Go/Java/Python)

你永远只看到 Nginx,看不到真实服务器。

作用:

  • 隐藏后端
  • 统一入口
  • 更安全

2.3 负载均衡 ​

如果你有 3 台后端服务器:

用户请求 → Nginx
             ↙ ↘ ↘
          server1 server2 server3

方式:

  • 轮询
  • 权重
  • 按 IP
  • 最少连接数

2.4 静态资源服务器 ​

Nginx 特别适合:

  • 图片
  • CSS
  • JS
  • 视频

比后端程序快很多。

2.5 HTTPS 证书管理 ​

Nginx 可以:

  • 安装 SSL 证书
  • 把 http → https
  • 加密通信

2.6 安全防护 ​

  • 限流(防刷接口)
  • IP 黑名单
  • 防止暴力请求
  • 防爬虫

三、Nginx 的工作原理(核心思想) ​

3.1 事件驱动模型(非常重要) ​

Apache:

一个请求一个进程(重)

Nginx:

一个进程处理成千上万请求(轻)

原理:

  • 非阻塞 IO
  • epoll 机制
  • 异步事件循环

就像:

一个服务员服务 100 桌,而不是 100 个服务员服务 100 桌

3.2 架构 ​

Master + Worker ​

Master 进程
   |
Worker1 Worker2 Worker3
  • Master:管理
  • Worker:处理请求

特点:

  • 稳定
  • 高并发
  • 崩一个 Worker 不影响其他

四、Nginx 的组成结构 ​

4.1 核心模块 ​

模块作用
http网站服务
streamTCP 代理
mail邮件代理
events并发处理

4.2 配置文件结构 ​

默认路径:

/etc/nginx/nginx.conf

基本结构:

nginx
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            root /var/www/html;
            index index.html;
        }
    }
}

你要理解:

  • server = 一个网站
  • location = 一个路由规则

五、Nginx 的核心应用场景 ​

场景 1:公司官网 ​

浏览器 → Nginx → 返回页面

场景 2:前后端分离 ​

前端请求 → Nginx → 后端 API

场景 3:多服务统一入口 ​

/api → 后端服务A
/admin → 后端服务B

场景 4:高可用 ​

  • 多台服务器
  • Nginx 做入口
  • 一台挂了继续服务

六、Nginx 与 Docker / K8S 的关系 ​

6.1 Nginx + Docker ​

Nginx 可以作为容器:

docker run -d -p 80:80 nginx

用来:

  • 统一入口
  • 反向代理多个容器

6.2 Nginx + K8S ​

在 K8S 中:

  • Nginx = Ingress Controller
  • 管理集群流量入口

七、Nginx 运维核心能力(你最需要) ​

7.1 服务启动/停止 ​

bash
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl status nginx

7.2 开机自启 ​

bash
systemctl enable nginx

7.3 崩溃自动恢复(守护) ​

结合:

  • systemd
  • Docker restart=always
  • supervisor

7.4 停电恢复方案 ​

最低级方案: ​

  • 所有服务注册为 systemctl
  • 开机自动启动

推荐方案: ​

  • Docker + docker-compose
  • Nginx + 后端容器
  • 一条命令恢复:
bash
docker compose up -d

八、Nginx 常见问题 ​

8.1 502 Bad Gateway ​

= 后端服务挂了

8.2 403 Forbidden ​

= 权限问题

8.3 404 ​

= 路径不对

8.4 端口冲突 ​

= 已有程序占用端口

九、Nginx 本质一句话总结 ​

Nginx 是互联网的“门卫 + 交通警察 + 保安 + 管家”。

十、网上资源截图(非商用) ​

An image

An image

An image

An image

An image

An image

An image

An image