Nginx
简介
Nginx 是高性能的 HTTP 和反向代理 Web 服务器,由 Igor Sysoev 开发。以高并发、低内存占用、稳定可靠著称。
核心功能
静态资源服务
nginx
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
}反向代理
nginx
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost: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;
}
}负载均衡
nginx
upstream backend {
# 负载均衡策略
least_conn; # 最少连接
server 192.168.1.1:8080 weight=3;
server 192.168.1.2:8080 weight=2;
server 192.168.1.3:8080 backup;
}
server {
location /api/ {
proxy_pass http://backend;
}
}HTTPS 配置
nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.pem;
ssl_certificate_key /etc/ssl/private/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}常用配置
限流
nginx
# 限制请求速率
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
location /login/ {
limit_req zone=mylimit burst=20 nodelay;
}
# 限制连接数
limit_conn_zone $binary_remote_addr zone=addr:10m;
location /download/ {
limit_conn addr 5;
}缓存
nginx
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}与 Java 应用集成
Nginx 通常作为 Java Web 应用的入口网关,反向代理到 Tomcat、Spring Boot 等应用服务器,实现负载均衡、SSL 终止、静态资源分离等功能。