Nginx(发音 "engine x")是一款高性能的HTTP / 反向代理服务器、负载均衡器、静态资源服务器,同时支持邮件代理、缓存、SSL 终结等能力,因轻量、高并发、低内存占用的特性,成为互联网架构中不可或缺的核心组件。以下是 Nginx 最核心的应用场景及落地实操:
Nginx 处理静态文件(HTML/CSS/JS/ 图片 / 视频)的性能远超 Tomcat/Java 容器,是静态资源分发的首选。
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name static.example.com;
root /usr/local/nginx/html;
index index.html index.htm;
location ~* \.(jpg|png|css|js)$ {
expires 7d;
add_header Cache-Control "public, max-age=604800";
}
location ~ /\.ht {
deny all;
}
}
}
- 开启
sendfile on;(零拷贝,减少磁盘 IO 与内核交互);
- 配置
gzip on;(压缩静态资源,减少传输体积);
- 大文件(如视频)配置
client_max_body_size 100M; 避免上传 / 访问限制。
反向代理是 Nginx 最核心的能力之一:客户端请求 Nginx,Nginx 转发到后端应用服务器(Tomcat/Java/Python),隐藏后端服务地址,同时实现请求过滤、负载均衡。
server {
listen 80;
server_name api.example.com;
location /api/ {
proxy_pass http://192.168.1.100:8080/;
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_connect_timeout 30s;
proxy_read_timeout 60s;
}
}
- 隐藏后端服务 IP,提升安全性;
- 统一入口(如所有请求走 80/443 端口,后端服务可监听非标准端口);
- 可在 Nginx 层做请求过滤(如限制 IP、拦截非法请求)。
当后端有多台应用服务器时,Nginx 可将请求分发到不同节点,提升系统并发能力,实现高可用。
http {
upstream backend_cluster {
server 192.168.1.100:8080 weight=5;
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080 backup;
keepalive 32;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://backend_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
Nginx 作为 SSL 终结点,处理 HTTPS 加密 / 解密,后端服务只需处理 HTTP 请求,降低后端性能消耗。
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/nginx/cert/fullchain.pem;
ssl_certificate_key /etc/nginx/cert/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
location / {
proxy_pass http://backend_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name www.example.com;
return 301 https://$host$request_uri;
}
Nginx 可限制请求频率、拦截非法请求,防止恶意攻击(如 CC 攻击)。
http {
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
server {
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
proxy_pass http://backend_cluster;
}
}
}
http {
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
server {
location /download/ {
limit_conn conn_limit 20;
root /usr/local/nginx/download;
}
}
}
location / {
if ($http_user_agent ~* (scrapy|curl|wget|python)) {
return 403;
}
deny 192.168.1.200;
allow 192.168.1.0/24;
deny all;
}
适配前端单页应用(Vue/React)的路由模式(如 History 模式),或实现 URL 美化、旧地址跳转。
server {
listen 80;
server_name fe.example.com;
root /usr/local/nginx/fe/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
rewrite ^/old-path/(.*)$ /new-path/$1 permanent;
}
Nginx 可缓存后端响应结果,减少后端重复请求,提升响应速度(适合读多写少的场景,如商品详情、新闻列表)。
http {
proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=api_cache:100m max_size=10g inactive=1d use_temp_path=off;
server {
location /api/article/ {
proxy_pass http://backend_cluster;
proxy_cache api_cache;
proxy_cache_key $host$request_uri;
proxy_cache_valid 200 304 1h;
proxy_cache_valid any 1m;
proxy_cache_bypass $cookie_nocache $arg_nocache;
add_header X-Proxy-Cache $upstream_cache_status;
}
}
}
nginx
nginx -s stop
nginx -s reload
nginx -t
nginx -v
Nginx 日志分为 access.log(访问日志)和 error.log(错误日志),核心配置:
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
}
- 单机故障:结合 Keepalived 实现 Nginx 主备切换(虚拟 IP 漂移);
- 集群部署:使用 Nginx Plus 或开源方案(如 Kong/OpenResty)实现集群化管理。
Nginx 的核心价值是 **「高性能、高可用、解耦架构」**,核心应用可总结为:
Nginx 是互联网架构的「基础设施」,掌握以上场景可覆盖 90% 的业务需求,进阶可结合 OpenResty(Nginx + Lua)实现自定义逻辑(如灰度发布、动态路由)。