在现代 Web 开发中,Nginx 作为高性能 Web 服务器、反向代理服务器、负载均衡器,被广泛应用于各种场景。它以高并发、低内存占用的特性,成为企业级应用的首选。
本篇文章将从Nginx 的基本概念、安装、配置文件结构等方面入手,帮助初学者快速上手 Nginx。
1. Nginx 是什么?
Nginx(读作“engine-x”)是一个开源的高性能 HTTP 服务器和反向代理服务器,最初由俄罗斯程序员 Igor Sysoev 开发,用于高流量网站。
1.1 Nginx 主要用途
🔹 Web 服务器(HTTP Server):用于静态资源(HTML、CSS、JS、图片等)的托管。
🔹 反向代理(Reverse Proxy):代理用户请求,将请求转发到后端服务器(如 Node.js、PHP、Tomcat 等)。
🔹 负载均衡(Load Balancer):分发请求到多个后端服务器,提高系统稳定性和吞吐量。
🔹 动静分离(Static & Dynamic Separation):静态资源由 Nginx 处理,动态请求交给后端应用服务器,优化性能。
🔹 SSL 证书管理:提供 HTTPS 支持,实现安全加密通信。
1.2 Nginx vs Apache
对比项 | Nginx | Apache |
并发处理 | 异步非阻塞,采用 epoll 机制,高并发性能优秀 | 多进程/多线程,并发能力较弱 |
内存占用 | 低,适用于高流量网站 | 高,进程/线程数量多时,消耗大量资源 |
静态资源 | 处理效率高,适合静态站点 | 处理静态资源较慢 |
配置文件 | 简洁直观 | 规则较复杂 |
负载均衡 | 内置负载均衡,支持轮询、IP 哈希等策略 | 需要额外模块支持 |
2. Nginx 的安装
2.1 在 Linux(Ubuntu/Debian)上安装 Nginx
使用 apt
安装:
sudo apt update
sudo apt install nginx -y
安装完成后,启动 Nginx:
sudo systemctl start nginx
设置开机自启:
sudo systemctl enable nginx
2.2 在 CentOS 上安装 Nginx
使用 yum
进行安装:
sudo yum install -y epel-release
sudo yum install -y nginx
启动 Nginx:
sudo systemctl start nginx
sudo systemctl enable nginx
2.3 在 Windows 上安装 Nginx
- 访问 Nginx 官网 下载 Windows 版本的 Nginx。
- 解压下载的文件,例如解压到
C:\nginx
。 - 打开命令行(CMD 或 PowerShell),进入 Nginx 目录:
cd C:\nginx
- 运行以下命令启动 Nginx:
nginx.exe
- 在浏览器中输入
http://localhost
,如果看到 Welcome to Nginx! 页面,说明 Nginx 运行成功。
3. Nginx 配置文件结构
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf
(Linux)或 C:\nginx\conf\nginx.conf
(Windows)。
3.1 Nginx 配置文件结构
# 全局配置
user www-data;
worker_processes 4;
error_log /var/log/nginx/error.log;
# 事件相关配置
events {
worker_connections 1024;
}
# HTTP 服务器配置
http {
include mime.types;
default_type application/octet-stream;
# 设定日志格式
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
# 服务器块
server {
listen 80;
server_name localhost;
# 指定网站根目录
root /var/www/html;
index index.html index.htm;
# 处理静态资源
location /images/ {
root /var/www/static;
}
# 反向代理到后端服务
location /api/ {
proxy_pass http://127.0.0.1:3000;
}
# 错误页面
error_page 404 /404.html;
}
}
4. 启动、重启、停止 Nginx
操作 | 命令 |
启动 Nginx |
|
停止 Nginx |
|
重新加载配置 |
|
重启 Nginx |
|
检查 Nginx 运行状态 |
|
如果修改了 Nginx 配置文件,建议使用 reload
方式重新加载,而不是 restart
,以避免服务中断。
5. Nginx 反向代理示例
Nginx 最常见的用途之一是反向代理,将请求转发到后端应用服务器(如 Node.js、PHP、Python)。
5.1 配置 Nginx 作为反向代理
编辑 Nginx 配置文件 /etc/nginx/sites-available/default
:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
📌 解析:
proxy_pass http://127.0.0.1:3000;
:将请求转发到运行在localhost:3000
的后端服务。proxy_set_header
:设置请求头信息,确保后端能获取正确的 IP 和域名信息。
5.2 测试反向代理
- 启动后端应用(如 Node.js 运行在
localhost:3000
)。 - 重新加载 Nginx:
sudo systemctl reload nginx
- 访问
http://example.com
,如果成功访问后端服务,则 Nginx 反向代理配置成功。
6. 总结
本篇文章介绍了 Nginx 的基础知识,包括:
- Nginx 的作用和应用场景
- 安装 Nginx(Linux & Windows)
- Nginx 配置文件的基本结构
- 如何启动、停止、重启 Nginx
- Nginx 反向代理的基本配置
🚀 下一篇文章,我们将深入探讨 Nginx 的反向代理与负载均衡!