2025.3.22
1. 什么是Nginx?
Nginx(发音为”engine-x”),一款高性能的HTTP和反向代理web服务器,同时也可作邮件代理服务器、TCP/UDP代理服务器等。超低内存,超高并发处理能力,性能强悍。凭借其高并发处理能力、低资源占用和模块化设计,迅速成为全球最流行的Web服务器之一。
俄罗斯程序员Igor Sysoev在为Rambler Media工作期间 ,使用C语言开发了Nginx。Nginx作为Web服务器一直为Rambler Media提供出色而又稳定的服务。
2. Nginx的核心特点
2.1 高并发处理能力
Nginx采用异步、事件驱动的架构,相较于传统的Apache使用多进程或多线程的方式,它能够更高效地处理大量并发请求。Nginx的单个工作进程可以处理成千上万的连接,使其在高流量网站和CDN服务中广泛应用。
同一时刻可以承载近50000的并发流量。实属强悍
2.2 低资源占用
由于Nginx采用非阻塞I/O模型,它在处理大量并发请求时的内存和CPU消耗远低于传统Web服务器。这使得Nginx在低配置服务器上依然能够保持高效运行。
2.3 强大的反向代理和负载均衡
Nginx可以作为反向代理服务器,将用户请求转发到后端服务器,并支持多种负载均衡策略,如轮询(round-robin)、最少连接(least connections)、IP哈希(IP hash)等。
2.4 静态资源高效处理
Nginx在处理静态资源(如HTML、CSS、JS、图片等)时,性能远超Apache,能够快速响应并减少服务器负担。
2.5 模块化架构
Nginx支持丰富的模块,可以通过编译时选择需要的功能模块,如Gzip压缩、访问控制、日志记录等。
3. Nginx的基本架构
Nginx的架构主要由以下几个部分组成:
- Master进程:负责管理Worker进程,处理配置文件加载、信号管理等。
- Worker进程:执行具体的请求处理,每个Worker进程是独立的,不会相互影响。
- 缓存机制:Nginx支持高效的缓存机制,可以减少后端服务器的压力,提高访问速度。
- 模块系统:支持HTTP、Mail、Stream等多个模块,灵活扩展功能。
4. Nginx的常见配置解析
4.1 Nginx安装
Nginx可以通过以下方式安装:
(1)使用包管理工具安装
# CentOS
sudo yum install nginx -y
# Ubuntu/Debian
sudo apt install nginx -y
(2)源码编译安装
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure --prefix=/usr/local/nginx
make && make install
4.2 Nginx核心配置文件
Nginx的主要配置文件位于/etc/nginx/nginx.conf
,其基本结构如下:
worker_processes auto; # 自动调整Worker进程数量
http {
include mime.types; # 支持的MIME类型
default_type application/octet-stream;
server {
listen 80; # 监听80端口
server_name example.com; # 绑定域名
location / {
root /var/www/html;
index index.html index.htm;
}
}
}
4.3 反向代理配置
Nginx可以作为反向代理,将请求转发到后端服务器:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080; # 代理到本地8080端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
4.4 负载均衡配置
Nginx支持多种负载均衡策略,以下是轮询(Round Robin)负载均衡的示例:
upstream backend_servers {
server 192.168.1.10;
server 192.168.1.11;
server 192.168.1.12;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
}
}
5. Nginx的安全优化
5.1 禁用服务器版本信息
默认情况下,Nginx会在HTTP响应头中返回版本信息,可通过以下方式隐藏:
server_tokens off;
5.2 限制访问频率
使用limit_req_zone防止恶意请求:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
}
}
5.3 配置HTTPS
为了增强安全性,可以启用SSL/TLS加密:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
root /var/www/html;
}
}
6. Nginx的进阶功能
6.1 Gzip压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;
6.2 配置跨域(CORS)
location /api/ {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
}
7. 结论
Nginx凭借其高性能、低资源占用、强大的代理和负载均衡能力,已经成为现代Web架构的核心组件。通过合理的配置优化和安全策略,可以极大提升网站的稳定性和安全性。希望本篇文章能帮助你更深入地理解Nginx,并能在实际应用中加以实践!