Skip to content

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 终止、静态资源分离等功能。