张芷铭的个人博客

Nginx 是高性能轻量级 Web 服务器,采用事件驱动异步非阻塞模型,单进程可处理数万并发连接,广泛用于静态资源服务、反向代理、负载均衡。

核心特性

特性说明
事件驱动epoll/kqueue 异步非阻塞 I/O
高并发万级并发,内存占用极低
模块化动态模块按需加载
热部署无需停服更新配置

典型配置

静态资源服务

1
2
3
4
5
6
server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html;
}

反向代理 + 动静分离

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
server {
    listen 80;
    server_name example.com;

    # 静态资源
    location ~* \.(jpg|png|css|js)$ {
        root /var/www/static;
        expires 7d;
    }

    # 动态请求代理到后端
    location /api/ {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

负载均衡

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
upstream backend {
    server 192.168.1.100:8080 weight=2;
    server 192.168.1.101:8080 weight=1;
    server 192.168.1.102:8080 backup;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

HTTPS 配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/cert/example.crt;
    ssl_certificate_key /etc/nginx/cert/example.key;
    ssl_protocols TLSv1.2 TLSv1.3;
}

Nginx vs Apache

特性NginxApache
并发模型异步非阻塞事件驱动多进程/多线程
并发能力万级千级
内存占用
动态内容需反向代理内置模块支持

常用命令

1
2
3
4
5
sudo apt install nginx          # 安装
sudo systemctl start nginx      # 启动
sudo systemctl restart nginx    # 重启
sudo nginx -t                   # 检查配置
sudo nginx -s reload            # 重载配置

配置文件路径

  • 主配置:/etc/nginx/nginx.conf
  • 站点配置:/etc/nginx/sites-available/
  • 日志:/var/log/nginx/access.log/var/log/nginx/error.log

Comments