Nginx 运维手册
介绍
Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛用于负载均衡、缓存、SSL终端等场景。它的高并发处理能力和低资源消耗使其成为现代 Web 架构中的核心组件。本手册将帮助你掌握 Nginx 的基本运维技能,并通过实际案例展示如何优化和保障 Nginx 的稳定运行。
1. Nginx 基础配置
1.1 安装 Nginx
在大多数 Linux 发行版中,Nginx 可以通过包管理器安装。以下是 Ubuntu 上的安装命令:
bash
sudo apt update
sudo apt install nginx
安装完成后,启动 Nginx 服务:
bash
sudo systemctl start nginx
1.2 配置文件结构
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf
,其结构如下:
nginx
# 全局配置
user www-data;
worker_processes auto;
# 事件模块配置
events {
worker_connections 1024;
}
# HTTP 模块配置
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
}
提示
worker_processes
:设置工作进程数,通常设置为 CPU 核心数。worker_connections
:每个工作进程的最大连接数。
2. 性能优化
2.1 启用 Gzip 压缩
Gzip 压缩可以显著减少传输数据的大小,提升页面加载速度。在 http
模块中添加以下配置:
nginx
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
2.2 调整缓冲区大小
优化缓冲区大小可以减少 I/O 操作,提升性能:
nginx
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
3. 安全设置
3.1 防止 DDoS 攻击
通过限制请求速率可以有效防止 DDoS 攻击:
nginx
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one burst=5;
}
}
3.2 隐藏 Nginx 版本号
隐藏 Nginx 版本号可以减少攻击面:
nginx
server_tokens off;
4. 实际案例
4.1 反向代理配置
假设你需要将请求转发到后端应用服务器,配置如下:
nginx
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4.2 负载均衡
使用 Nginx 实现简单的负载均衡:
nginx
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
5. 总结
通过本手册,你已经掌握了 Nginx 的基础配置、性能优化和安全设置。Nginx 是一个功能强大的工具,合理使用它可以显著提升 Web 服务的性能和安全性。
附加资源
练习
- 在你的服务器上安装 Nginx 并配置一个简单的静态网站。
- 尝试为你的网站启用 Gzip 压缩,并测试性能提升。
- 配置一个反向代理,将请求转发到本地的一个应用服务器。