优化 nginx https 配置需分层清晰、格式统一、职责分离:用 include 拆分为 ssl-common.conf、ssl-session.conf、ssl-ocsp.conf、ssl-hsts.conf;统一 4 空格缩进、花括号换行、指令后空格;server 块按监听、证书、安全策略、性能、location 分区;注释说明原因与有效期。

优化 Nginx HTTPS 配置文件的可读性与结构,核心在于“分层清晰 + 格式统一 + 职责分离”。不是堆参数,而是让每一块配置都容易定位、理解、修改和复用。
用 include 拆分功能模块
把 HTTPS 相关配置从主配置中剥离,按逻辑拆成独立文件,避免 nginx.conf 膨胀混乱。常见划分方式:
-
ssl-common.conf:通用 SSL 参数(如
ssl_protocols、ssl_ciphers、ssl_prefer_server_ciphers off) -
ssl-session.conf:会话缓存与超时(
ssl_session_cache shared:SSL:10m、ssl_session_timeout 1d) -
ssl-ocsp.conf:OCSP Stapling 配置(
ssl_stapling on、ssl_trusted_certificate) -
ssl-hsts.conf:HSTS 安全头(
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always)
在 server 块中直接引入:
include ssl-common.conf;include ssl-session.conf;
include ssl-hsts.conf;
标准化缩进与格式
缩进错乱是阅读障碍的主因。推荐使用 nginxfmt 工具自动统一风格:
- 固定 4 空格缩进,不混用 Tab
- 花括号换行对齐(Java 风格),如
server {换行后缩进再写内容 - 相邻空行最多保留 2 行,避免大段空白割裂逻辑
- 指令后统一加空格(如
ssl on;而非ssl on;)
执行命令一键格式化:
python3 nginxfmt.py /etc/nginx/conf.d/example.com.conf按用途组织 server 块结构
一个 HTTPS server 块内,按执行顺序和关注点分组书写,提升扫描效率:
- 监听与基础标识:
listen 443 ssl http2;、server_name - 证书路径:
ssl_certificate和ssl_certificate_key(建议注释证书有效期) - 安全策略块:包含 session、ciphers、HSTS、CSP 等
- 协议与性能优化:
http2_max_field_size、ssl_buffer_size、gzip相关 - location 分区:先写
/、再/api/、再/static/,每个 location 内部保持 proxy_pass 或 root + index 顺序一致
添加上下文注释,不写废话
注释要说明“为什么”,而不是“是什么”。例如:
- ✅ 好注释:
# ECDHE-ECDSA-AES256-GCM-SHA384 优先用于现代客户端,兼顾性能与前向保密 - ❌ 差注释:
# 启用 SSL(指令本身已说明) - ✅ 在证书路径旁加:
# expires: 2027-03-15 (Let's Encrypt) - ✅ 在 HSTS 行后加:
# includeSubDomains 因所有子域均走 HTTPS











