以下是关于 Nginx 的详细介绍,涵盖核心概念、常用配置及优化方向,适合后端开发学习:
1. Nginx 是什么?
- 高性能 Web 服务器:轻量级、高并发(单机可支持数万并发连接),占用内存少。
- 反向代理:隐藏真实服务器,实现负载均衡、缓存加速等。
- 负载均衡器:支持轮询、加权轮询、IP Hash 等算法。
- 其他功能:HTTP/2 支持、动静分离、SSL/TLS 终止等。
2. 核心配置示例
基础 HTTP 服务
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
反向代理配置
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend_servers; # 转发到后端服务器组
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
upstream backend_servers {
server 192.168.1.10:8080 weight=3; # 权重轮询
server 192.168.1.11:8080;
}
负载均衡策略
round-robin
(默认):轮询分发请求。weight
:权重分配。ip_hash
:同一客户端 IP 固定访问同一后端。least_conn
:优先发给连接数最少的后端。
3. Nginx vs Apache
特性 | Nginx | Apache |
---|---|---|
并发模型 | 事件驱动(异步) | 多线程/多进程 |
内存占用 | 低 | 较高 |
静态文件 | 极快 | 一般 |
动态内容 | 需反向代理 | 原生支持(如 PHP) |
配置灵活性 | 简洁 | .htaccess 支持 |
4. Nginx调优方向
(1) Worker进程优化
worker_processes auto; # CPU核心数
worker_connections 1024; # 单个进程最大连接数
keepalive_timeout 65; # Keep-Alive超时时间
(2) Gzip压缩
gzip on;
gzip_types text/plain application/json text/css;
(3)静态文件缓存
location ~* \.(jpg|css|js)$ {
expires 30d; #客户端缓存30天
}
(4)日志优化
access_log off; #高并发时可关闭日志
error_log /var/log/nginx/error.log crit;
5.常见问题排查
- 端口占用:
netstat -tulnp | grep nginx
- 配置文件检查:
nginx -t
-性能瓶颈分析:top -p $(pgrep nginx) #查看CPU/内存占用 ss -s #统计连接数
如果需要更具体的场景配置(如 HTTPS、WebSocket),可以进一步探讨!
内容由零声教学AI助手提供,问题来源于学员提问