Nginx配置详解

引言

      Nginx是一个高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3代理服务。Nginx以其高并发连接处理能力、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。

一、Nginx配置文件结构

# 全局配置块:影响nginx全局的配置
user root;                # 运行用户
worker_processes auto;     # worker进程数,通常设置为CPU核心数
error_log /var/log/nginx/error.log; # 错误日志路径
pid /run/nginx.pid;        # 进程ID文件位置

# events块:配置影响nginx服务器或与用户的网络连接
events {
    worker_connections 1024;   # 每个worker进程的最大连接数
    use epoll;                 # 事件驱动模型,Linux系统推荐使用epoll
}

# http块:配置代理、缓存、日志等绝大多数功能
http {
    # 基础配置
    include /etc/nginx/mime.types;           # 文件扩展名与类型映射表
    default_type application/octet-stream;   # 默认文件类型
    
    # 日志配置
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log /var/log/nginx/access.log main;   # 访问日志路径和格式
    
    # 优化配置
    sendfile on;              # 启用sendfile直接传输文件
    tcp_nopush on;           # 启用TCP_NOPUSH,在sendfile开启时使用
    tcp_nodelay on;          # 启用TCP_NODELAY,禁用Nagle算法
    keepalive_timeout 65;    # 保持连接超时时间
    
    # 虚拟主机配置
    server {
        listen 80;               # 监听端口
        server_name example.com; # 域名
        
        # 地址匹配配置
        location / {
            root /usr/share/nginx/html;  # 网站根目录
            index index.html index.htm;  # 默认首页
        }
        
        # 错误页面配置
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/share/nginx/html;
        }
    }
}

二、常用配置实例

  1. 反向代理配置

# 配置反向代理到后端服务
location /api/ {
    proxy_pass http://backend-server:8080/;  # 后端服务地址
    proxy_set_header Host $host;             # 设置请求头Host
    proxy_set_header X-Real-IP $remote_addr; # 设置客户端真实IP
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout 60;                # 连接超时时间
    proxy_send_timeout 60;                   # 发送超时时间
    proxy_read_timeout 60;                   # 读取超时时间
}

 2. 负载均衡配置

# 定义后端服务器组
upstream backendGroup {
    # 加权轮询策略
    server 192.168.1.10:8080 weight=3;  # 权重为3
    server 192.168.1.11:8080 weight=2;  # 权重为2
    server 192.168.1.12:8080 weight=1;  # 权重为1
}

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://backendGroup;  # 请求转发到backend服务器组
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

3. SSL配置

# HTTPS服务器配置
server {
    listen 443 ssl;                    # 监听443端口,启用SSL
    server_name example.com;
    
    ssl_certificate cert/cert.pem;     # SSL证书文件路径
    ssl_certificate_key cert/key.pem;  # SSL私钥文件路径
    
    # SSL优化配置
    ssl_session_cache shared:SSL:1m;   # SSL会话缓存
    ssl_session_timeout 5m;            # SSL会话超时时间
    ssl_ciphers HIGH:!aNULL:!MD5;      # 使用的加密套件
    ssl_prefer_server_ciphers on;      # 优先使用服务器端的加密套件
    
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
}

4.开启gzip压缩


# 启用gzip压缩
gzip on;
gzip_min_length 1k;          # 最小压缩文件大小
gzip_comp_level 6;           # 压缩级别1-9,越大压缩率越高但越耗CPU
gzip_types text/plain text/css application/json application/javascript;  # 要压缩的文件类型
gzip_vary on;               # 添加Vary: Accept-Encoding头

5.配置缓存

# 静态文件缓存配置
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 7d;              # 静态文件缓存7天
    add_header Cache-Control public;
    access_log off;          # 关闭访问日志
}

6.安全相关配置

# 安全相关配置
server {
    # 隐藏版本号
    server_tokens off;
    
    # 防止XSS攻击
    add_header X-XSS-Protection "1; mode=block";
    
    # 防止点击劫持
    add_header X-Frame-Options "SAMEORIGIN";
    
    # 防止MIME类型嗅探
    add_header X-Content-Type-Options nosniff;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天飛 雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值