无心૮₍°°₎ა博客 - 服务器
type: channel
link: https://blog.228889.xyz/index.php/tag/%E6%9C%8D%E5%8A%A1%E5%99%A8/
items: nginx 的 server 块配置解析

nginx 的 server 块配置解析
type: item
date: 2025-05-26T16:22:27+08:00
description: http { server_tokens off; # 隐藏版本号 # 想要彻底清除 Server 响应头可以选择 ngx_headers_more 模块，这个模块需要额外安装。或者直接安装 nginx-extras 包也会带上这个模块。 more_clear_headers Server; # 清除 Server 响应头 # 阻止ip访问 server { # default_server 是一个配置参数，用于指定当请求的域名（Host 头）没有匹配任何 server 块时，Nginx 应该使用哪个 server 块来处理这些请求。 listen 443 ssl default_server; server_name _; # 匹配所有未配置的域名或IP，这样设置了 default_server 的 server 块（即本块）就会处理所有未匹配的请求。 ssl_certificate 证书.pem; # 签名证书路径，相对路径、绝对路径都可以 ssl_certificate_key 私钥.key; # 私钥路经 return 403; # 返回禁止访问 } # https配置模板 server { # https的默认端口是443，只有把端口写成443，登录网站的时候才不需要写端口号 listen 443 ssl; # [::] 是 IPv6 的通配符地址，表示监听所有可用的 IPv6 地址（类似于 IPv4 的 0.0.0.0） listen [::]:443 ssl; # Nginx 会先检查请求的域名是否与某个 server_name 精确匹配， # 如果没有精确匹配，会尝试使用通配符匹配。如果没有找到匹配的 server_name，Nginx 会将请求交给 default_server 的 server 块。 server_name 这里写你的域名; # ssl配置，证书可以使用免费的Let's Encrypt生成，阿里云上也有，但是签名需要域名， # 不需要域名的可以自己使用 openssl 创建自签名证书，但是自签名证书不受信任 ssl_certificate 证书.pem; # 签名证书路径，nginx支持pem格式的证书 ssl_certificate_key 私钥.key; # 私钥路经 # 启用ssl协议，强制使用 TLS 1.2 和 1.3 版本 ssl_protocols TLSv1.2 TLSv1.3; # 启用加密套件，加密套件的顺序用冒号分隔。很重要，Nginx 会按照这个顺序选择一个加密套件 ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; # 强制性要求浏览器在加密连接时优先使用 服务器端 的加密套件 ssl_prefer_server_ciphers on; # 会话缓存：会话缓存能够存储客户端和服务器之间建立的 SSL/TLS 会话，避免每次请求都重新建立完整的握手过程，从而提升性能，减少 CPU 使用。通常 1 MB 可以存储大约 4000 个会话。 ssl_session_cache shared:SSL:1m; # 会话缓存时间：用于设置 SSL 会话缓存中会话的过期时间。在指定时间内，客户端可以重用之前缓存的会话，对于大多数网站，设置为 5m（5 分钟）到 10m（10 分钟）是合理的范围。 ssl_session_timeout 5m; # 向 HTTP 响应中添加自定义的 HTTP 头部信息。语法：add_header <header_name> <value> [always]; # add_header 指令可以写在 http、server 或 location 块中，作用范围会逐级缩小。如果多个级别的 add_header 冲突，优先使用最具体（内层）的配置。 # 强制客户端使用 HTTPS 访问，防止中间人攻击。 # max-age=31536000：缓存 1 年。includeSubDomains：对子域生效。preload：允许加入浏览器 HSTS 预加载列表。 # [always]: 默认情况下，add_header 只会在响应状态码为 200、204、206、301、302、303 或 304 时添加。如果加上 always 参数，头部会在所有响应中添加（包括错误状态码，如 404 或 500）。 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; # 只允许特定的 HTTP 方法。 add_header Access-Control-…