Nginx 使用教程

Web 服务器 · 反向代理 · 负载均衡

简介

Nginx 是一款高性能的 HTTP 和反向代理服务器,以其高并发、低内存消耗著称。广泛应用于 Web 托管、负载均衡和 API 网关。

Nginx 核心功能

  • HTTP 服务器
  • 反向代理 / 正向代理
  • 负载均衡
  • SSL/TLS 终端
  • 静态文件服务

安装 Nginx

Ubuntu / Debian

sudo apt update
sudo apt install nginx

CentOS / RHEL

sudo yum install epel-release
sudo yum install nginx

启动与停止

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx

安装完成后,访问 http://your_server_ip 即可看到 Nginx 欢迎页面。

基本配置

配置文件位置

/etc/nginx/nginx.conf          # 主配置文件
/etc/nginx/sites-available/   # 网站配置目录
/etc/nginx/sites-enabled/      # 启用的网站
/var/www/html/                 # 默认网站根目录

简单网站配置

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

常用命令

sudo nginx -t          # 测试配置文件
sudo nginx -s reload  # 重载配置

反向代理

反向代理允许 Nginx 将客户端请求转发到后端应用服务器(如 Node.js、Python、Django 等)。

server {
    listen 80;
    server_name myapp.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        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_set_header X-Forwarded-Proto $scheme;
    }
}

常用 proxy_set_header 说明

  • Host - 传递原始主机名
  • X-Real-IP - 客户端真实 IP
  • X-Forwarded-For - 代理链 IP
  • X-Forwarded-Proto - 原始协议

HTTPS 配置

使用 Let's Encrypt 免费证书

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

手动配置 SSL

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/ssl/certs/your_cert.pem;
    ssl_certificate_key /etc/ssl/private/your_key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/html;
    index index.html;
}

负载均衡

Nginx 支持多种负载均衡策略:

轮询(默认)

upstream backend {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
    server 192.168.1.103:8080;
}

server {
    listen 80;
    server_name myapp.com;
    
    location / {
        proxy_pass http://backend;
    }
}

权重负载均衡

upstream backend {
    server 192.168.1.101:8080 weight=3;
    server 192.168.1.102:8080 weight=1;
}

IP Hash

upstream backend {
    ip_hash;
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}