1小时入门NGINX

文章目录 「隐藏」
  1. 前言
  2. 第一部分:认识Nginx(10分钟)
    1. 什么是Nginx?
    2. Nginx能做什么?
    3. 为什么选择Nginx?
  3. 第二部分:安装与启动(10分钟)
    1. 安装Nginx
      1. Linux系统(以Ubuntu为例)
      2. Windows系统
      3. Mac系统(使用Homebrew)
    2. 基本操作命令
    3. 验证安装
  4. 第三部分:核心配置解析(15分钟)
    1. 配置文件位置
    2. 配置文件结构
    3. 核心配置指令说明
  5. 第四部分:常用场景实战(20分钟)
    1. 场景1:静态资源服务器
    2. 场景2:反向代理
    3. 场景3:负载均衡
  6. 第五部分:实战练习(5分钟)
  7. }
  8. 总结与进阶方向

一小时入门Nginx:从理论到实践

前言

你是否听说过Nginx?这个轻量级的Web服务器正在被越来越多的企业采用,从电商网站到大型互联网平台都能看到它的身影。

本教程将用60分钟带你入门Nginx,通过"概念讲解+实操示例"的方式,让你读完就能部署简单服务,再读一遍就能理解核心原理。


第一部分:认识Nginx(10分钟)

什么是Nginx?

Nginx(发音同"engine x")是一个高性能的HTTP和反向代理服务器,同时也提供了IMAP/POP3/SMTP服务。

核心特点: - 高性能:支持每秒数万并发连接 - 轻量级:内存占用少,启动快 - 高可靠:稳定运行时间长,故障率低 - 多功能:可作为Web服务器、反向代理、负载均衡器等

Nginx能做什么?

用通俗的语言解释Nginx的常见用途:

  1. 静态资源服务器:直接提供HTML、CSS、JS、图片等文件
  2. 反向代理:替后端服务器接收请求,隐藏真实服务器地址
  3. 负载均衡:将请求分发到多个服务器,避免单点压力过大
  4. 动静分离:静态文件由Nginx处理,动态请求转发给应用服务器
  5. SSL终端:处理HTTPS加密解密,减轻后端服务器负担

为什么选择Nginx?

对比传统的Apache服务器,Nginx的优势:

特性 Nginx Apache
并发处理 异步非阻塞,支持高并发 同步多进程,并发能力较弱
内存占用 较高
配置方式 简洁,集中式配置 相对复杂,分散配置
扩展方式 模块静态编译 动态加载模块

第二部分:安装与启动(10分钟)

安装Nginx

Linux系统(以Ubuntu为例)

更新软件包列表

sudo apt update

安装Nginx

sudo apt install nginx -y

检查版本

nginx -v

Windows系统

  1. Nginx官网下载稳定版
  2. 解压到任意目录(如C:\nginx
  3. 通过命令行进入该目录

Mac系统(使用Homebrew)

安装Homebrew(如果未安装)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装Nginx

brew install nginx

基本操作命令

启动Nginx

sudo systemctl start nginx # Linux系统

nginx # Windows/Mac系统

停止Nginx

sudo systemctl stop nginx # Linux系统

nginx -s stop # Windows/Mac系统

重启Nginx

sudo systemctl restart nginx # Linux系统

nginx -s reload # Windows/Mac系统(平滑重启,推荐)

查看状态

sudo systemctl status nginx # Linux系统

验证安装

  1. 启动Nginx后,打开浏览器访问http://localhost
  2. 看到"Nginx"欢迎页面,说明安装成功

注意:如果无法访问,可能是防火墙阻止了80端口,需要配置防火墙规则


第三部分:核心配置解析(15分钟)

配置文件位置

系统 主配置文件位置
Ubuntu/Debian /etc/nginx/nginx.conf
CentOS/RHEL /etc/nginx/nginx.conf
Windows 安装目录/conf/nginx.conf
Mac(Homebrew) /usr/local/etc/nginx/nginx.conf

配置文件结构

Nginx配置文件采用块级结构,主要包含以下部分:

全局块:配置影响nginx全局的指令

user nginx; # 运行用户 worker_processes auto; # 工作进程数,通常设为CPU核心数 error_log /var/log/nginx/error.log; # 错误日志 pid /run/nginx.pid; # 进程PID文件

events块:配置影响nginx服务器与用户网络连接

events { worker_connections 1024; # 每个工作进程的最大连接数 use epoll; # 使用epoll模型(Linux系统推荐) }

http块:配置HTTP服务器的主要指令

http { include /etc/nginx/mime.types; # 引入MIME类型定义 default_type application/octet-stream;

# 日志格式定义
log_format main 'remote_addr -remote_user [time_local] "request" '
                'statusbody_bytes_sent "http_referer" '
                '"http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;  # 访问日志

sendfile on;  # 开启高效文件传输模式
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;  # 长连接超时时间
types_hash_max_size 2048;

include /etc/nginx/conf.d/*.conf;  # 引入其他配置文件
include /etc/nginx/sites-enabled/*;  # 引入站点配置

# server块:配置虚拟主机
server {
    listen 80;  # 监听端口
    server_name localhost;  # 域名

    # location块:配置URL路由规则
    location / {
        root /usr/share/nginx/html;  # 网站根目录
        index index.html index.htm;  # 默认首页
    }
}

}

核心配置指令说明

  1. worker_processes:工作进程数量,推荐设置为CPU核心数

  2. worker_connections:每个工作进程的最大连接数,总并发数 ≈ 工作进程数 × 该值

  3. server:定义虚拟主机,一个http块中可以有多个server块

  4. listen:指定监听端口,默认80

  5. server_name:指定域名,可配置多个域名用空格分隔

  6. location:根据URL路径匹配请求,语法:

    • location /path:匹配以/path开头的路径
    • location = /path:精确匹配/path
    • location ~ /path:正则匹配(区分大小写)
  7. root:指定网站根目录

  8. index:指定默认首页文件


第四部分:常用场景实战(20分钟)

场景1:静态资源服务器

配置Nginx作为静态网站服务器:

  1. 创建网站目录和测试文件:# 创建网站目录 sudo mkdir -p /var/www/mywebsite

创建测试页面

sudo nano /var/www/mywebsite/index.html 2. 在index.html中添加内容: My Website

Hello, Nginx!

This is a static website served by Nginx. 3. 创建Nginx配置文件:sudo nano /etc/nginx/conf.d/mywebsite.conf 4. 添加以下配置:server { listen 80; server_name mysite.local; # 可以在hosts文件中映射到127.0.0.1

root /var/www/mywebsite;
index index.html;

# 日志配置
access_log /var/log/nginx/mywebsite_access.log;
error_log /var/log/nginx/mywebsite_error.log;

# 配置缓存策略
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;  # 静态资源缓存30天
}

} 5. 检查配置并重启:sudo nginx -t # 检查配置是否正确 sudo systemctl restart nginx # 重启Nginx 6. 访问测试:打开浏览器访问http://mysite.local

场景2:反向代理

将Nginx作为反向代理,转发请求到后端应用:

  1. 假设你有一个运行在127.0.0.1:3000的Node.js应用

  2. 创建配置文件:server { listen 80; server_name api.example.com;

    将所有请求转发到3000端口

    location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host host; proxy_set_header X-Real-IPremote_addr; proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Protoscheme; } }

  3. 解释核心指令:
    • proxy_pass:指定后端服务器地址
    • proxy_set_header:设置转发给后端的请求头

场景3:负载均衡

配置Nginx实现简单的负载均衡:

在http块中添加

upstream myapp { server 192.168.1.100:3000; # 后端服务器1 server 192.168.1.101:3000; # 后端服务器2 server 192.168.1.102:3000; # 后端服务器3 }

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

location / {
    proxy_pass http://myapp;  # 转发到上面定义的服务器组
    proxy_set_header Host host;
    proxy_set_header X-Real-IPremote_addr;
}

}

负载均衡策略:默认是轮询,还可以配置weight权重、ip_hash等策略


第五部分:实战练习(5分钟)

现在请你动手完成以下练习,巩固所学知识:

  1. 安装Nginx并启动服务
  2. 创建一个简单的HTML页面,内容为"我的第一个Nginx网站"
  3. 配置Nginx,使其能访问到这个页面
  4. 修改配置,添加一个反向代理,将/api路径的请求转发到https://httpbin.org
  5. 测试配置是否生效,访问http://localhosthttp://localhost/api/get

提示:反向代理配置示例location /api { proxy_pass https://httpbin.org; proxy_set_header Host httpbin.org; # 解决路径问题 rewrite ^/api(.*)1 break;

}

总结与进阶方向

恭喜你!通过这一小时的学习,你已经掌握了Nginx的基础知识:

  • 了解Nginx的核心功能和优势
  • 学会安装和基本操作Nginx
  • 理解Nginx配置文件结构
  • 掌握静态资源服务、反向代理和负载均衡的配置

进阶学习方向:

  1. 深入理解Nginx架构:学习Nginx的进程模型和事件处理机制
  2. HTTPS配置:配置SSL证书,实现HTTPS访问
  3. 高级负载均衡策略:学习加权轮询、IP哈希、URL哈希等策略
  4. Nginx模块开发:了解如何开发自定义Nginx模块
  5. 性能优化:根据业务场景优化Nginx配置参数

实践建议: - 在本地搭建测试环境,多尝试不同配置 - 分析错误日志,学会排查问题 - 阅读官方文档,了解更多指令和最佳实践

Nginx的学习是一个循序渐进的过程,从简单配置开始,逐步深入,你会发现它的强大之处。继续探索吧!

《1小时入门NGINX》留言数:0

发表留言