Nginx基础讲解

Nginx基础讲解

Nginx 是一款高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、静态资源托管、SSL 终端等场景。以下是对 Nginx 的详细讲解:

1. Nginx 核心概念​

​事件驱动架构​:基于异步非阻塞模型,高效处理高并发连接,资源占用低。
​模块化设计​:支持通过模块扩展功能(如 HTTP、Stream、gRPC 等)。
​反向代理​:接收客户端请求并转发至后端服务器,隐藏后端细节。
​负载均衡​:将流量分发到多个服务器,提升系统可用性和性能

2. 安装与配置

2.1 安装

  • ​Ubuntu/Debian​:
sudo apt update
sudo apt install nginx
  • ​CentOS/RHEL​:
sudo yum install epel-release
sudo yum install nginx
  • 源码编译​(定制化强):
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install

2.2 配置文件结构

主配置文件通常为 /etc/nginx/nginx.conf,结构如下:

# 全局配置
user nginx;
worker_processes auto;  # 工作进程数(建议设置为 CPU 核心数)

events {
    worker_connections 1024;  # 单个进程最大连接数
}
http {
    # HTTP 相关配置
    include /etc/nginx/mime.types;
    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
        location / {
            index index.html;
        }
    }
}

3. 核心功能配置

3.1 静态文件服务

server {
    listen 80;
    server_name example.com;
    root /var/www/html;  # 静态文件根目录

    location / {
        try_files $uri $uri/ =404;  # 尝试按路径查找文件
    }

    location /images/ {
        alias /var/www/images/;  # 路径别名(替换匹配部分)
    }
}

3.2 反向代理

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;  # 转发到后端
        proxy_set_header Host $host;       # 传递原始 Host 头
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# 定义后端服务器组
upstream backend_server {
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
}

3.3 负载均衡策略​

  • ​轮询(默认)​ ​:依次分发请求。
  • ​权重(weight) ​:按权重分配流量。
  • ​IP 哈希(ip_hash) :同一客户端 IP 固定到同一后端。
  • 最少连接(least_conn) ​:优先发给连接数最少的后端
upstream backend {
    ip_hash;
    server 192.168.1.1:8080 weight=2;  # 权重为2
    server 192.168.1.2:8080;
    server 192.168.1.3:8080 backup;    # 备用服务器
}

3.4 SSL/TLS 配置

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    # 安全增强配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
        proxy_pass http://backend;
    }
}
# HTTP 重定向到 HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

4. 高级配置

4.1 URL 重写

location /old {
    rewrite ^/old/(.*) /new/$1 permanent;  # 301 重定向
}

# 条件重写(如移动端跳转)
if ($http_user_agent ~* "mobile") {
    rewrite ^(.*)$ /mobile/$1 break;
}

4.2 访问控制

location /admin {
    allow 192.168.1.0/24;
    deny all;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;  # 密码文件
}

4.3 跨域(CORS)​

location /api {
    add_header 'Access-Control-Allow-Origin' 'http://client.com';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
}

你可能感兴趣的:(nginx,运维)