首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

Nginx 基础入门

写作时间:2026-07-08

Nginx 基础入门

概述

Nginx 是高性能 HTTP 和反向代理服务器,以事件驱动架构著称,单机可支持数万并发连接。

安装

# Ubuntu/Debian
apt-get install nginx

# CentOS/RHEL
yum install nginx

# Docker
docker run -d -p 80:80 --name nginx nginx

# 常用命令
nginx -t          # 测试配置文件语法
nginx -s reload   # 热重载配置
nginx -s stop     # 停止

配置文件结构

# 全局块
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

# events 块
events {
  worker_connections 1024;
  use epoll;
}

# http 块
http {
  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  # server 块(虚拟主机)
  server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html;

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

    location /api/ {
      proxy_pass http://localhost:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
}

反向代理

server {
  listen 80;
  server_name api.example.com;

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

    # 超时设置
    proxy_connect_timeout 30s;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
  }
}

负载均衡

轮询(默认)

upstream backend {
  server 192.168.1.10:8080;
  server 192.168.1.11:8080;
  server 192.168.1.12:8080;
}

server {
  location /api/ {
    proxy_pass http://backend;
  }
}

权重

upstream backend {
  server 192.168.1.10:8080 weight=3;
  server 192.168.1.11:8080 weight=1;
}

IP Hash(会话保持)

upstream backend {
  ip_hash;
  server 192.168.1.10:8080;
  server 192.168.1.11:8080;
}

最小连接

upstream backend {
  least_conn;
  server 192.168.1.10:8080;
  server 192.168.1.11:8080;
}

静态资源服务

server {
  listen 80;
  server_name static.example.com;
  root /var/www/static;

  # 缓存控制
  location ~* \.(jpg|png|css|js|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
  }

  # Gzip 压缩
  gzip on;
  gzip_types text/css application/javascript application/json;
  gzip_min_length 256;
}
avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Maven 多模块与私服

2026-07-08

MyBatis 缓存与插件

2026-07-08