## 一、Linux系统层优化
### 1. 安全基础配置
- **系统更新**:定期执行 `sudo apt update && sudo apt upgrade`(Debian系)或 `sudo dnf update`(RHEL系),保持内核与软件包最新。
- **防火墙**:仅开放必要端口(22/SSH、80/HTTP、443/HTTPS)。
Ubuntu:`sudo ufw allow 22,80,443/tcp && sudo ufw enable`
RHEL系:`sudo firewall-cmd --permanent --add-service={ssh,http,https} && sudo firewall-cmd --reload`
- **SSH加固**:
- 修改默认端口(`/etc/ssh/sshd_config` 中 `Port`)
- 禁用root登录(`PermitRootLogin no`)
- 启用密钥认证(`PasswordAuthentication no`)
- 配置Fail2ban防止暴力破解
- **专用服务账户**:创建非root用户(如 `www-data`)运行Nginx,遵循最小权限原则。
### 2. 内核与资源调优(`/etc/sysctl.conf`)
```conf
# 网络连接优化
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_fin_timeout = 30
# 注:tcp_tw_reuse 需谨慎使用(仅适用于客户端连接场景,服务器端建议结合业务评估)
```
生效命令:`sudo sysctl -p`
文件描述符限制:
- `/etc/security/limits.conf` 添加:
`* soft nofile 65535`
`* hard nofile 65535`
- 重启会话后验证:`ulimit -n`
### 3. 运维增强
- **时间同步**:部署 `chrony` 或 `systemd-timesyncd`,确保日志与证书时效准确。
- **日志管理**:配置 `logrotate`(`/etc/logrotate.d/nginx`),避免磁盘占满。
- **SELinux/AppArmor**:建议保留并配置策略(如 `audit2allow` 生成规则),而非直接禁用。
---
## 二、Nginx应用层优化
### 1. 核心性能配置(`nginx.conf`)
```nginx
user www-data; # 与系统创建的专用用户一致
worker_processes auto; # 匹配CPU核心数
worker_rlimit_nofile 65535; # 与系统ulimit对齐
events {
use epoll; # Linux高效事件模型
worker_connections 10240;
multi_accept on;
}
http {
sendfile on; # 零拷贝传输静态文件
tcp_nopush on; # 配合sendfile提升吞吐
tcp_nodelay on; # 小包实时传输优化
keepalive_timeout 65;
types_hash_max_size 2048;
# 隐藏版本信息
server_tokens off;
# Gzip压缩(按需启用)
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# 安全响应头(HTTPS场景补充HSTS)
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Strict-Transport-Security 仅在全站HTTPS且测试无误后启用
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# 防护基础设置
client_max_body_size 10M; # 限制上传大小
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
# 禁止敏感路径访问
location ~ /\.(env|git|ht|svn) {
deny all;
return 404;
}
}
```
### 2. SSL/TLS专项优化(启用HTTPS时)
- 协议与加密套件:
`ssl_protocols TLSv1.2 TLSv1.3;`
`ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256';`
`ssl_prefer_server_ciphers on;`
- 会话复用:`ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;`
- OCSP Stapling:`ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 valid=300s;`
- 证书管理:推荐使用 Let's Encrypt + Certbot 实现自动续期。
### 3. 运维支持
- **配置验证与重载**:
`nginx -t && nginx -s reload`(避免服务中断)
- **状态监控**(谨慎开放):
```nginx
location /nginx_status {
stub_status on;
allow 127.0.0.1; # 严格限制访问IP
deny all;
}
```
- **日志优化**:`access_log /var/log/nginx/access.log main buffer=32k flush=5s;`
---
## 三、持续运维建议
1. **监控体系**:部署 Prometheus + Node Exporter + Grafana,监控CPU、内存、连接数及Nginx指标(需启用stub_status)。
2. **定期审计**:
- 每月检查系统与Nginx安全公告
- 使用 `lynis` 或 `rkhunter` 进行安全扫描
- 验证备份完整性(网站文件、数据库、配置)
3. **压力测试**:上线前使用 `wrk` 或 `ab` 模拟流量,验证优化效果。
4. **云平台特性**:结合云厂商文档启用增强功能(如网络加速、云监控Agent、快照策略)。
> **重要提示**:
> - 所有修改前务必备份配置文件(`cp /etc/nginx/nginx.conf{,.bak}`)
> - 参数需依据实际硬件资源、流量模型动态调整,避免“一刀切”
> - 安全配置(如HSTS、CSP)需充分测试,防止业务阻断
> - 遵循“最小权限、纵深防御”原则,定期复审策略有效性
通过系统性优化与持续运维,可显著提升网站服务的可靠性与抗风险能力。如有特定业务场景(高并发API、媒体站等),建议进一步定制专项策略。