Nginx入门进阶:从零到高手的实战指南

Nginx 入门与进阶玩法指南

一、什么是 Nginx?

Nginx(Engine X)是一个高性能的 HTTP 和反向代理服务器,同时也可以作为 IMAP/POP3/SMTP 邮件代理服务器。它最初由俄罗斯程序员 Igor Sysoev 开发,用于解决高并发下 Apache 性能瓶颈问题。如今,它已成为 Web 服务中最主流的服务器之一。

核心特点:

  • 异步事件驱动架构,适合处理大量并发连接。
  • 内存占用小,稳定性高。
  • 支持热部署、热加载配置。
  • 模块化设计,便于扩展。

二、Nginx 能做什么?

  1. 静态资源服务器:用于服务 HTML、CSS、JS、图片、音视频等文件。
  2. 反向代理服务器:将请求转发给后端应用服务,比如 Node.js、Java、Python 程序。
  3. 负载均衡器:支持多种策略(轮询、IP 哈希、最少连接等)。
  4. 缓存服务器:作为前端缓存层,大大减轻后端压力。
  5. HTTPS 网关:用作 TLS 终端代理,配合 Let's Encrypt 实现免费证书自动续期。
  6. API 网关/限流器:结合 Lua、OpenResty 实现接口限流、鉴权等功能。
  7. WebSocket 代理:支持持久连接转发,适用于实时通信场景。

三、如何快速开始使用 Nginx?

1. 安装

Ubuntu:
bash 复制代码
sudo apt update
sudo apt install nginx
macOS(通过 Homebrew):
bash 复制代码
brew install nginx

2. 启动与基本命令

bash 复制代码
# 启动 Nginx
sudo nginx

# 重载配置(热更新)
sudo nginx -s reload

# 停止 Nginx
sudo nginx -s stop

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

默认配置文件路径:

  • Linux: /etc/nginx/nginx.conf
  • macOS (Homebrew): /opt/homebrew/etc/nginx/nginx.conf

四、实用玩法案例

1. 将本地应用暴露给公网:静态站点部署

nginx 复制代码
server {
    listen 80;
    server_name mydomain.com;

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

2. 反向代理 Node.js 后端

nginx 复制代码
server {
    listen 80;
    server_name mydomain.com;

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

3. 配置 HTTPS

nginx 复制代码
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/private/example.key;

    location / {
        proxy_pass http://localhost:8080;
    }
}

可以使用 Let's Encrypt + Certbot 自动申请和续期 HTTPS 证书。


五、进阶玩法

1. 负载均衡配置

nginx 复制代码
upstream backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

支持多种策略:

  • round-robin(默认)
  • least_conn(最少连接)
  • ip_hash(IP 绑定)

2. 访问控制

nginx 复制代码
location /admin {
    allow 192.168.1.0/24;
    deny all;
}

3. 限流控制

nginx 复制代码
http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    server {
        location /api/ {
            limit_req zone=one burst=5 nodelay;
        }
    }
}

六、结合 OpenResty 实现更强功能

Nginx + Lua(OpenResty) 提供超强的可编程能力,可用于:

  • 接口限流
  • 动态路由
  • A/B 测试
  • 用户鉴权
  • 日志上报
lua 复制代码
location /api/check_token {
    content_by_lua_block {
        local token = ngx.var.arg_token
        if not token or token ~= "123456" then
            ngx.status = 403
            ngx.say("Forbidden")
            return
        end
        ngx.say("OK")
    }
}

七、调试和性能优化建议

  • 使用 access_logerror_log 调试问题。
  • 配置 worker_processes auto; 合理利用 CPU。
  • 开启缓存、Gzip 提升性能。
  • 调整 client_max_body_size 限制上传大小。

八、Nginx 玩出花的建议方向

  • 本地搭建 CDN 服务(结合缓存和负载均衡)
  • 构建 HTTPS 加密的 WebSocket 通信代理
  • 写 Lua 插件完成防爬虫、防刷接口逻辑
  • 将 Nginx 容器化部署,实现微服务网关(结合 Docker/K8s)
  • Nginx + Prometheus + Grafana 实现监控面板
相关推荐
云游16 分钟前
IP地址管理:docker方式部署phpIPAMv1.7.3
运维·docker·ip·ipv4·ipv6
小闫BI设源码1 小时前
Docker Swarm主机编排
运维·docker·容器·容器编排·docker compose·依赖管理·多服务启动
Reicher1 小时前
Docker的介绍和使用
运维·docker·容器
zrande1 小时前
基于HTTP构建局域网内YUM网络源:详细操作指南(太细)
运维·构建yum网络源
cetcht88881 小时前
从 “有人值守” 到 “少人运维”:智能巡检机器人重塑配电室管理模式
大数据·运维·人工智能·机器人
Mr.45671 小时前
Linux&Windows环境下Nacos3.1.0详细安装配置指南:从零到生产就绪
linux·运维·服务器
峰顶听歌的鲸鱼2 小时前
30.Linux DHCP 服务器
linux·运维·服务器·笔记·学习方法
退役小学生呀2 小时前
二十一、DevOps:从零建设基于K8s的DevOps平台(二)
运维·docker·云原生·容器·kubernetes·devops
微风中的麦穗3 小时前
【MD编辑器Typora】Typora最新 V1.12.1版:轻量级 Markdown 编辑器详细图文下载安装使用指南 【办公学习神器之MD文本编辑器】
运维·typora·开发工具·md编辑器·markdown 编辑器·markdown文件·办公学习工具
violet-lz3 小时前
Linux文件系统调用:文件调用函数与exec系统函数详解与应用
linux·运维·服务器