Nginx服务器10项安全加固配置指南

Nginx 是一款开源的高性能 Web 服务器,同时支持反向代理邮件代理功能,采用 BSD 许可协议分发。其核心优势在于内存占用少和高并发处理能力,能有效支撑大流量应用场景。本文将系统介绍Nginx服务器10项关键配置优化。

一、基础安全策略

1. 版本升级

# 查看当前版本(安全加固起点)
nginx -v

# 源码编译升级(推荐)
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3

# 精简模块示例(禁用非必要功能

./configure --without-http_autoindex_module  # 关闭目录列表
make && sudo make install

注意:

  • 生产环境禁用--without-http_empty_gif_module等非核心模块
  • 订阅Nginx安全通告


二、必须实施的5项防护配置

2. 隐藏服务器标识

# 在http块添加(全局生效)
http {
   server_tokens off;  # 禁止返回版本信息
}

3. 拦截恶意爬虫

# /etc/nginx/block_bots.conf
map $http_user_agent $is_bot {
   default 0;
   "~*bot" 1;  # 匹配所有bot
   "~*scan" 1; # 匹配扫描器
}

# server块引用
server {
   if ($is_bot) { return 403; }
}

4. 限制HTTP方法

location / {
   # 只允许GET/POST/HEAD方法
   if ($request_method !~ ^(GET|POST|HEAD)$) {
       return 405;  # 更标准的Method Not Allowed
   }
}

5. 防缓冲区溢出攻击

http {
   client_body_buffer_size   16k;
   client_header_buffer_size 1k;
   client_max_body_size      10m;  # 根据业务调整
}

6. 连接数限制

http {
   # 每IP限制100连接
   limit_conn_zone $binary_remote_addr zone=conn_per_ip:10m;
   limit_conn conn_per_ip 100;
}


三、高级防护策略

7. 防盗链配置

location ~* \.(jpg|png|mp4)$ {
   # 仅允许自家域名引用
   valid_referers ~.yourdomain.com;
   if ($invalid_referer) {
       return 403;
   }
}

8. 强制HTTPS加密

server {
   listen 443 ssl;
   # 禁用不安全协议
   ssl_protocols TLSv1.2 TLSv1.3;

   # 自动获取免费证书(推荐)
   ssl_certificate     /etc/letsencrypt/live/yourdomain/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;
}

# HTTP重定向HTTPS
server {
   listen 80;
   return 301 https://$host$request_uri;
}

证书自动化:

sudo certbot --nginx 一键获取并配置Let's Encrypt证书


四、监控与维护

9. 关键日志分析

# 实时监控异常请求
tail -f /var/log/nginx/access.log | grep -E ' 40[34] | 50[0-5] '

# 生成安全报告(每周)

goaccess /var/log/nginx/access.log --log-format=COMBINED > report.html

10. 配置健康检查

# 测试配置语法
nginx -t

# 热重载配置(不中断服务)
nginx -s reload

通过这10项核心配置,可使Nginx安全评级大幅提升。