Nginx高级用法案例汇总

一、负载均衡高级策略

1. 加权轮询算法优化

通过为不同性能的服务器设置权重,使性能强劲的服务器承担更多请求:

upstream backend {
    server server1 weight=3;
    server server2 weight=1;
}

2. 会话保持机制

确保同一用户请求始终分配到同一后端服务器:

upstream backend {
    ip_hash;
    server server1;
    server server2;
}

3. 最小连接数负载均衡

选择当前连接数最少的服务器处理请求:

upstream backend {
    least_conn;
    server server1;
    server server2;
}

二、反向代理高级配置

1. 基于URL的精细化反向代理

针对不同URL路径设置不同代理目标:

location /api/ {
    proxy_pass http://api_backend;
}

location /static/ {
    proxy_pass http://static_backend;
}

2. 反向代理缓存控制

减轻后端服务器压力,加快响应速度:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m;

location / {
    proxy_cache cache_zone;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    proxy_pass http://backend;
}

三、安全配置

1. IP白名单/黑名单

# IP白名单
location /admin {
    allow 192.168.1.0/24;
    deny all;
}

# IP黑名单
location / {
    deny 192.168.1.100;
    allow all;
}

2. 请求限制

location /api {
    limit_except GET {
        deny all;
    }
}

3. User-Agent限制

if ($http_user_agent ~* "BadBot|Scrapy") {
    return 403;
}

4. 安全HTTP头部配置

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Content-Security-Policy "default-src 'self'";

5. 隐藏Nginx版本信息

server_tokens off;
add_header Server "CustomServer";

四、高级性能优化

1. 全局优化配置

worker_processes auto;
worker_cpu_affinity 0001 0010 0100 1000; # 适用于4核CPU

events {
    use epoll;
    worker_connections 51200;
    multi_accept on;
}

2. 连接处理优化

http {
    proxy_connect_timeout 60s;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
}

3. 限流配置

limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

location / {
    limit_req zone=one burst=5;
}

五、高级应用场景

1. 静态资源代理

location /images/ {
    root /var/www/static;
    expires 30d;
    add_header Cache-Control "public";
}

2. 解决前端跨域问题

location /api {
    proxy_pass http://backend;
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}

3. 作为下载服务器

location /download/ {
    alias /var/www/downloads/;
    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;
}

六、Nginx可视化管理

Nginx-GUI使用案例

  1. 安装配置
    下载地址:
    https://nginxui.com/zh_CN/guide/about.html
    或https://github.com/onlyGuo/nginx-gui

    • 下载对应系统版本安装包
    • 修改conf/conf.properties配置文件
    • Linux需重命名lib/bin/java_vms为java_vms_nginx_gui
  2. 启动服务

    sudo chmod -R 777 nginx-gui/
    nohup bash /root/web/nginx-gui/startup.sh > logs/nginx-gui.out &
    
  3. 访问:默认地址http://localhost:8889,用户名/密码:admin/admin

七、最佳实践总结

  1. 安全第一:始终隐藏Nginx版本信息,配置必要的安全HTTP头部
  2. 性能优化:根据服务器硬件配置合理的worker_processes和worker_connections
  3. 负载均衡策略:根据实际业务需求选择合适的负载均衡算法
  4. 缓存策略:合理配置反向代理缓存,减轻后端压力
  5. 监控与日志:启用状态页配置,定期分析访问日志

以上配置示例均基于Nginx 1.18+版本,可根据实际环境进行适当调整。在生产环境中使用前,建议在测试环境进行充分验证。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值