全场景 SNI 匹配与兜底流程(宝塔部署参考版)

全场景 SNI 匹配与兜底流程(宝塔部署参考版)

重要提示:先备份!先备份!先备份!

一、核心配置基础说明(无冲突前提)

20251216124328693-share_image_1765860172225_edit_306878875988068

核心前提:业务站点仅响应自身配置域名,兜底主机仅处理“匹配失败”的无效请求,三者配置独立、功能分层,无任何重叠冲突。

二、全场景 SNI 匹配与兜底流程梳理

场景1:访问已配置业务域名(以 www.qqorg.com 为例)

1. 请求发起:客户端输入  https://www.qqorg.com ,TLS 握手时 SNI 携带目标域名  www.qqorg.com ,请求 443 端口。

2. Nginx 匹配:遍历 server 块,精准匹配 qqorg.com 站点的  server_name ,跳过兜底主机和 wpzz.net 站点。

3. 最终结果:加载 qqorg.com 专属 SSL 证书、根目录和业务配置,SNI 验证通过,返回正常页面,无任何拦截。

场景2:访问无 www 业务域名+IPv6(以 wpzz.net 为例)

1. 请求发起:客户端通过 IPv6 地址访问  https://wpzz.net ,SNI 携带  wpzz.net ,命中  [::]:443 ssl  监听规则。

2. Nginx 匹配:跳过 qqorg.com 站点和兜底主机,精准匹配 wpzz.net 站点的  server_name 。

3. 最终结果:执行 wpzz.net 站点的 SSL 验证、静态缓存等配置,返回正常页面,IPv6 环境无适配冲突。

场景3:直接访问服务器 IPv4 地址(以  https://1.2.3.4  为例)

1. 请求发起:无目标域名,SNI 未携带有效域名,仅访问服务器 IPv4:443 端口。

2. Nginx 匹配:所有业务站点的  server_name  均为具体域名,匹配失败,触发兜底主机的  default_server  规则。

3. 最终结果:兜底主机检测到  $host=1.2.3.4 != sni.wpzz.net ,返回 444 状态码关闭连接,客户端无法访问,无信息泄露。

场景4:访问未配置第三方域名(以  https://test-random.com  为例)

1. 请求发起:域名已解析到服务器 IP,但 Nginx 未配置,SNI 携带  test-random.com  访问 443 端口。

2. Nginx 匹配:业务站点  server_name  均不匹配,触发兜底主机的  default_server  规则。

3. 最终结果:兜底主机执行  return 444 ,静默关闭连接,不返回任何错误信息,无效请求被拦截。

三、核心结论(无冲突+SNI 有效)

1. 匹配优先级无冲突:SNI 优先匹配业务站点的  server_name ,仅匹配失败时触发兜底,业务与兜底完全隔离。

2. 配置无重叠冲突:三者的 SSL 证书、根目录、日志路径独立,无资源占用或配置覆盖问题。

3. SNI 验证完全有效:业务站点通过 SNI 精准匹配自身域名和证书,客户端身份验证正常;兜底主机不干扰业务 SNI 流程。

4. 兜底仅拦截无效请求:仅针对“纯 IP 访问、未配置域名”等场景生效,不影响任何合法业务访问。

四、部署注意事项(实操参考)

1. 确保业务站点未配置  default_server ,仅兜底主机的 443/[::]:443 端口启用该参数。

2. 三个站点的 SSL 证书需与自身  server_name  一致,避免证书验证失败。

3. 兜底主机的  root  目录可指向空目录(如  /dev/null ),进一步降低误操作风险。

4. 如需排查问题,可通过业务站点和兜底主机的独立日志定位,互不干扰。

三.纯SNI验证兜底主机配置文件

20251216130305525-Screenshot_20251216_130106_com.huawei.browser_edit_308028554439976

# ========== 纯SNI验证兜底主机(SSL+XSS+防劫持 全安全优化版) ==========
server
{
    listen 80;
    listen 443 ssl default_server;
    listen 443 quic default_server;
    listen [::]:443 ssl default_server;
    listen [::]:443 quic default_server;
    http2 on;
    listen [::]:80 default_server;
    
    server_name sni主机;
    root /www/wwwroot/sni主机;

    #CERT-APPLY-CHECK--START 证书自动续签专用配置
    include /www/server/panel/vhost/nginx/well-known/sni主机.conf;
    #CERT-APPLY-CHECK--END
    include /www/server/panel/vhost/nginx/extension/sni主机/*.conf;
    
    # HTTPS强制跳转逻辑(排除证书验证目录)
    set $isRedcert 1;
    if ($server_port != 443) {
        set $isRedcert 2;
    }
    if ($uri ~ /\.well-known/) {
        set $isRedcert 1;
    }
    if ($isRedcert != 1) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    #SSL-START SSL核心安全配置(语法修正+全安全增强)
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/sni主机/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/sni主机/privkey.pem;
    # 仅启用安全协议,自动禁用老旧协议
    ssl_protocols TLSv1.2 TLSv1.3;
    # 高强度加密套件,剔除所有弱算法
    ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:!aNULL:!eNULL:!LOW:!3DES:!MD5:!CAMELLIA:!IDEA:!RC4:!EXP:!PSK:!DSS;
    # OCSP装订:提升证书验证效率,防止劫持
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /www/server/panel/vhost/cert/sni主机/fullchain.pem;
    resolver 解析DNSip 解析DNSip valid=300s;
    resolver_timeout 10s;
    # DH参数:增强RSA证书密钥交换安全(不影响ECC证书)
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    # ECDH高强度曲线
    ssl_ecdh_curve secp384r1;
    ssl_prefer_server_ciphers on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    # 关闭0-RTT,避免重放攻击
    ssl_early_data off;

    # 全量安全响应头(防降级+防劫持+防XSS+防MIME嗅探)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
    add_header X-Frame-Options "DENY" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options nosniff always;
    add_header Content-Security-Policy "default-src 'none'; script-src 'none'; style-src 'none'; img-src 'none'" always;
    error_page 497  https://$host$request_uri;
    #SSL-END

    #ERROR-PAGE-START 错误页配置
    error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START 禁用PHP解析
    #include enable-php-00.conf;
    #PHP-INFO-END

    #REWRITE-START 禁用伪静态
    #include /www/server/panel/vhost/rewrite/sni主机.conf;
    #REWRITE-END

    # 核心拦截逻辑:非sni主机请求直接关闭连接
    location / {
        if ($host != sni主机) {
            return 444;
        }
        return 404;
    }

    # 禁止访问敏感文件
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
        return 404;
    }

    # 证书验证目录权限
    location ~ \.well-known {
        allow all;
    }

    # 禁止证书验证目录存放敏感文件
    location ~ ^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$ {
        return 403;
    }

    # 静态资源缓存(兜底主机保留,不影响功能)
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$ {
        expires 12h;
        error_log /dev/null;
        access_log /dev/null;
    }

    # 日志配置
    access_log  /www/wwwlogs/sni主机.log;
    error_log  /www/wwwlogs/sni主机.error.log;
}

四.ECC证书业务网站配置文件

20251216130325918-Screenshot_20251216_130150_com.huawei.browser_edit_308043572189974

# ========== 业务站点配置 ==========
# 功能:处理  @及 www 子域名的 HTTP/HTTPS 请求,集成高强度 SSL 加密、强制 HTTPS 跳转、安全防护头部、静态资源缓存等能力
server
{
    # 监听 IPv4 的 80 端口,用于接收 HTTP 明文请求
    listen 80;
    # 监听 IPv4 的 443 端口,启用 SSL/TLS 加密(HTTPS 协议)和 QUIC 协议(为 HTTP/3 提供支持)
    listen 443 ssl;
    listen 443 quic;
    # 监听 IPv6 的 443 端口,启用 SSL/TLS 加密和 QUIC 协议,适配 IPv6 网络环境
    listen [::]:443 ssl;
    listen [::]:443 quic;
    # 启用 HTTP/2 协议,相比 HTTP/1.1 大幅提升 HTTPS 连接的并发传输效率
    http2 on;
    # 监听 IPv6 的 80 端口,处理 IPv6 环境下的 HTTP 明文请求
    listen [::]:80;
    # 绑定业务域名,仅响应 ECC证书业务网站 和 www.ECC证书业务网站 的请求;不设置 default_server,避免充当 SNI 兜底主机
    server_name ECC证书业务网站 www.ECC证书业务网站;
    # 定义默认索引文件的查找优先级,优先解析 PHP 动态文件,其次是 HTML 静态文件
    index index.php index.html index.htm default.php default.htm default.html;
    # 指定网站根目录的物理存储路径,站点所有资源均存放于此
    root /www/wwwroot/ECC证书业务网站;

    # 证书申请/续签专用配置:包含 ACME 协议验证文件的访问规则,保证 Let's Encrypt 等证书自动签发与续签
    include /www/server/panel/vhost/nginx/well-known/ECC证书业务网站.conf;
    # 包含站点的扩展配置文件,可用于添加自定义规则(如防盗链、IP 限流等)
    include /www/server/panel/vhost/nginx/extension/ECC证书业务网站/*.conf;
    
    # 强制 HTTPS 跳转逻辑配置(排除证书验证目录),确保所有业务请求均为加密传输
    # 初始化跳转标记变量,1 代表不跳转,2 代表需要跳转
    set $isRedcert 1;
    # 判断访问端口,非 443 端口(即 HTTP 明文请求)则标记为需要跳转
    if ($server_port != 443) {
        set $isRedcert 2;
    }
    # 判断请求路径,若为证书验证目录则标记为不跳转,避免影响证书续签流程
    if ( $uri ~ /\.well-known/ ) {
        set $isRedcert 1;
    }
    # 根据标记变量,将需要跳转的请求永久重定向到 HTTPS 协议
    if ($isRedcert != 1) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    # SSL 核心配置区域:配置证书、协议、加密套件等关键安全参数
    # 配置 SSL 证书链文件路径,包含服务器证书和中间证书,用于客户端验证服务器身份
    ssl_certificate    /www/server/panel/vhost/cert/ECC证书业务网站/fullchain.pem;
    # 配置 SSL 证书私钥文件路径,为加密通信提供密钥支持,需严格保密
    ssl_certificate_key    /www/server/panel/vhost/cert/ECC证书业务网站/privkey.pem;
    # 仅启用安全的 TLS 协议版本,禁用老旧的 TLSv1.0/TLSv1.1,避免协议降级攻击
    ssl_protocols TLSv1.2 TLSv1.3;
    # 安全加密套件:同时兼容 ECDSA
    ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED;
    # 明确指定 TLS 1.3 专用密码套件,进一步提升 TLS 1.3 连接的加密强度和握手效率
    ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256;

    # 优先使用服务器端定义的加密套件,而非客户端提供的套件列表,确保通信安全性由服务器把控
    ssl_prefer_server_ciphers on;
    # 指定 ECDH 密钥交换的曲线,选用高强度的 secp384r1 曲线提升密钥交换安全性
    ssl_ecdh_curve secp384r1;
    # OCSP 装订优化配置:提升证书状态验证效率,减少客户端连接耗时与额外网络请求
    ssl_stapling on;
    ssl_stapling_verify on;
    # 指定可信的证书链文件,用于验证 OCSP 响应的合法性
    ssl_trusted_certificate /www/server/panel/vhost/cert/ECC证书业务网站/fullchain.pem;
    # 配置 DNS 服务器,用于 OCSP 查询,设置 300 秒缓存有效期提升查询性能
    resolver 服务器DNSip 服务器DNSip valid=300s;
    # 设置 DNS 查询超时时间为 10 秒,避免因 DNS 查询阻塞导致连接建立失败
    resolver_timeout 10s;
    # SSL 会话缓存配置:提升重复连接的速度,降低服务器资源消耗
    ssl_session_tickets on;
    # 配置共享 SSL 会话缓存,分配 10MB 内存空间存储客户端会话信息
    ssl_session_cache shared:SSL:10m;
    # 设置 SSL 会话超时时间为 10 分钟,超时后需重新进行握手
    ssl_session_timeout 10m;

    # 安全防护头部配置:增强站点抗 XSS、中间人攻击等安全威胁的能力
    # HSTS 头部:强制客户端在 1 年内仅使用 HTTPS 连接,包含子域名并支持预加载,防止 HTTPS 降级攻击
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    # Alt-Svc 头部:声明支持的替代传输协议,为 QUIC/HTTP3 提供适配,提升传输性能
    add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
    # 禁止浏览器自动猜测文件 MIME 类型,防止因类型误判引发的 XSS 等安全漏洞
    add_header X-Content-Type-Options nosniff always;
    # 启用 XSS 防护,检测到跨站脚本攻击时立即阻止页面加载,降低攻击危害
    add_header X-XSS-Protection "1; mode=block" always;
    # CSP 内容安全策略:适度宽松,允许自身和所有 HTTPS 资源,支持内联脚本/样式,兼容主流第三方 CDN
    add_header Content-Security-Policy "default-src 'self' https:; script-src 'self' https: 'unsafe-inline' 'unsafe-eval'; style-src 'self' https: 'unsafe-inline'; img-src 'self' https: data:;" always;
    # 将 497 状态码请求(HTTP 访问 HTTPS 端口)重定向到对应的 HTTPS 地址
    error_page 497  https://$host$request_uri;

    # 业务功能配置区域:包含重定向、错误页、PHP 解析等核心业务配置
    # 包含站点的重定向规则配置文件,可自定义 URL 跳转逻辑
    include /www/server/panel/vhost/nginx/redirect/ECC证书业务网站/*.conf;
    # 配置 404 错误页面的返回路径,当请求资源不存在时返回该页面
    error_page 404 /404.html;
    # 加载 PHP-8.4 运行配置,使站点能够解析 .php 后缀的动态文件
    include enable-php-84.conf;
    # 包含站点的伪静态规则配置文件,实现 URL 美化,提升 SEO 友好度
    include /www/server/panel/vhost/rewrite/ECC证书业务网站.conf;

    # 敏感文件和目录防护配置:防止泄露站点配置、源码等敏感信息
    # 禁止访问隐藏配置文件、版本控制目录等敏感内容,请求时返回 404
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    # 允许所有客户端访问证书验证目录,保证证书自动续签流程正常
    location ~ \.well-known{
        allow all;
    }
    # 禁止在证书验证目录存放可执行脚本、压缩包等敏感文件,请求时返回 403
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    # 静态资源缓存配置:减轻服务器负担,提升客户端资源加载速度
    # 图片类静态资源缓存 30 天,关闭日志记录以减少磁盘 I/O 消耗
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }
    # JS 和 CSS 类静态资源缓存 12 小时,关闭日志记录提升服务器性能
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }

    # 日志配置:记录站点运行状态,便于问题排查
    # 配置站点访问日志的存储路径,记录所有合法请求的访问信息
    access_log  /www/wwwlogs/ECC证书业务网站.log;
    # 配置站点错误日志的存储路径,记录服务器运行过程中的错误信息
    error_log  /www/wwwlogs/ECC证书业务网站.error.log;
}

六.RSA证书业务网站配置

1. 标准生成命令(2048位,兼顾安全与生成速度)

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
# RSA业务网站 站点Nginx配置文件
# 功能:处理 @ 及 www 子域名的 HTTP/HTTPS 请求,融合多站点优化经验,强化 SSL 安全、协议兼容性与资源缓存能力
server
{
    # 监听 IPv4 的 80 端口(HTTP 协议,用于接收明文请求并跳转 HTTPS)
    listen 80;
    # 监听 IPv4 的 443 端口,启用 SSL/TLS 加密(HTTPS 协议)和 QUIC 协议(为 HTTP/3 做准备)
    listen 443 ssl;
    listen 443 quic;
    # 监听 IPv6 的 443 端口,启用 SSL/TLS 加密和 QUIC 协议,适配 IPv6 网络环境
    listen [::]:443 ssl;
    listen [::]:443 quic;
    # 启用 HTTP/2 协议,相比 HTTP/1.1 大幅提升 HTTPS 连接的并发传输效率
    http2 on;
    # 监听 IPv6 的 80 端口(HTTP 协议),处理 IPv6 环境下的明文请求
    listen [::]:80;
    # 配置站点绑定的主域名和 www 子域名,仅响应这两个域名的请求
    server_name RSA业务网站 www.RSA业务网站;
    # 定义默认索引文件的查找优先级,优先解析 PHP 动态文件,其次是 HTML 静态文件
    index index.php index.html index.htm default.php default.htm default.html;
    # 指定网站根目录的物理存储路径,站点所有资源均存放于此
    root /www/wwwroot/RSA业务网站;

    #CERT-APPLY-CHECK--START 证书自动申请/续签专用配置段,请勿删除或修改
    # 包含 ACME 协议验证文件的访问规则,用于 Let's Encrypt 等免费证书的自动签发与续签
    include /www/server/panel/vhost/nginx/well-known/RSA业务网站.conf;
    #CERT-APPLY-CHECK--END
    # 包含站点的扩展配置文件,可用于添加自定义 Nginx 规则(如防盗链、限流等)
    include /www/server/panel/vhost/nginx/extension/RSA业务网站/*.conf;
    
    #SSL-START SSL 相关核心配置区域,包含证书、协议、加密套件等关键安全配置
    # 宝塔面板保留的 404 规则注释,用于兼容面板操作,请勿修改或删除
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START 强制 HTTPS 跳转逻辑配置,确保所有请求均为加密传输
    # 初始化跳转标记变量,1 表示不跳转,2 表示需要跳转
    set $isRedcert 1;
    # 判断访问端口,非 443 端口(即 HTTP 明文请求)则标记为需要跳转
    if ($server_port != 443) {
        set $isRedcert 2;
    }
    # 判断请求路径,若为证书验证目录则标记为不跳转,保证证书自动续签流程不受影响
    if ( $uri ~ /\.well-known/ ) {
        set $isRedcert 1;
    }
    # 根据标记变量,将需要跳转的请求永久重定向到 HTTPS 协议,提升站点安全性
    if ($isRedcert != 1) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END

    # 配置 SSL 证书链文件路径,包含服务器证书和中间证书,用于客户端验证服务器身份
    ssl_certificate    /www/server/panel/vhost/cert/RSA业务网站/fullchain.pem;
    # 配置 SSL 证书私钥文件路径,为加密通信提供密钥支持,需严格保密防止泄露
    ssl_certificate_key    /www/server/panel/vhost/cert/RSA业务网站/privkey.pem;
    # 仅启用安全的 TLS 协议版本,禁用老旧的 TLSv1.0/TLSv1.1,避免协议降级攻击
    ssl_protocols TLSv1.2 TLSv1.3;

    # 1:兼容 RSA/ECDSA 证书的加密套件 + TLS1.3 密码套件指定 =====
    # 加密套件列表:同时适配 RSA 和 ECDSA 两种证书类型,剔除弱加密算法,优先选择高性能安全套件
    ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED;
    # 明确指定 TLS 1.3 专用密码套件,进一步提升 TLS 1.3 连接的加密强度和握手效率
    ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256;
    # 2:指定 ECDH 曲线,增强密钥交换安全性 =====
    # 选用高强度的 secp384r1 曲线作为 ECDH 密钥交换的基础,提升密钥交换过程的安全性
    ssl_ecdh_curve secp384r1;

    # 优先使用服务器端定义的加密套件,而非客户端提供的套件列表,确保通信安全性由服务器把控
    ssl_prefer_server_ciphers on;
    # 配置 DH 参数文件路径,为 RSA 证书的 DHE 密钥交换提供高强度参数支持
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    # 1. 启用 OCSP 装订功能,提升证书状态验证效率,减少客户端连接耗时与网络请求
    ssl_stapling on;
    ssl_stapling_verify on;
    # 指定可信的证书链文件,用于验证 OCSP 响应的合法性
    ssl_trusted_certificate /www/server/panel/vhost/cert/RSA业务网站/fullchain.pem;
    # 配置 DNS 服务器,用于 OCSP 查询,并设置 300 秒缓存有效期,提升查询性能
    resolver 服务器DNS解析ip 服务器DNS解析ip valid=300s;
    # 设置 DNS 查询超时时间为 10 秒,避免因 DNS 查询阻塞导致连接建立失败
    resolver_timeout 10s;
    # 会话配置:提升重复连接的速度,降低服务器资源消耗
    # 启用 SSL 会话票据功能,实现跨进程的会话复用
    ssl_session_tickets on;
    # 配置共享 SSL 会话缓存,分配 10MB 内存空间,存储客户端会话信息
    ssl_session_cache shared:SSL:10m;
    # 设置 SSL 会话超时时间为 10 分钟,超时后需重新握手
    ssl_session_timeout 10m;

    # 2. 防降级攻击+安全头部强化配置,增强站点抗 XSS、中间人攻击等能力
    # 3:style-src 补充 https:,兼容第三方 HTTPS 样式表 =====
    # CSP 内容安全策略:适度宽松,允许自身和所有 HTTPS 资源,支持内联脚本/样式,兼容主流第三方 CDN
    add_header Content-Security-Policy "default-src 'self' https:; script-src 'self' https: 'unsafe-inline' 'unsafe-eval'; style-src 'self' https: 'unsafe-inline'; img-src 'self' data: https:;" always;
    # HSTS 头部:强制客户端在 1 年内仅使用 HTTPS 连接,包含子域名并支持预加载,防止 HTTPS 降级攻击
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    # 禁止浏览器自动猜测文件 MIME 类型,防止因类型误判引发的 XSS 等安全漏洞
    add_header X-Content-Type-Options nosniff always;
    # 启用 XSS 防护,检测到跨站脚本攻击时立即阻止页面加载,降低 XSS 攻击危害
    add_header X-XSS-Protection "1; mode=block" always;
    # 向响应头添加当前使用的 TLS 协议版本,便于排查 SSL 相关问题
    add_header TLS-Version "$ssl_protocol" always;
    # Alt-Svc 头部:声明支持的替代传输协议,为 QUIC/HTTP3 提供适配,提升传输性能
    add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
    # 将 497 状态码请求(即使用 HTTP 协议访问 HTTPS 端口的请求)重定向到对应的 HTTPS 地址
    error_page 497  https://$host$request_uri;
    #SSL-END

    # 包含站点的重定向规则配置文件,可自定义 URL 跳转规则(如旧域名跳新域名、短链接跳转等)
	include /www/server/panel/vhost/nginx/redirect/RSA业务网站/*.conf;

    #ERROR-PAGE-START 错误页面配置区域,可自定义各类错误码的响应页面
    # 配置 404 错误页面的返回路径,当请求资源不存在时返回该页面
    error_page 404 /404.html;
    # 可配置 502 错误页面的返回路径,当前为注释状态
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START PHP 运行环境配置区域,用于启用站点的 PHP 解析能力
    # 加载 PHP-8.4 的运行配置,使站点能够解析 .php 后缀的动态文件
    include enable-php-84.conf;
    #PHP-INFO-END

    #REWRITE-START URL 重写规则配置区域,用于实现伪静态、URL 美化等功能
    # 包含站点的伪静态规则配置文件,将动态 URL 伪装为静态 URL,提升 SEO 友好度
    include /www/server/panel/vhost/rewrite/RSA业务网站.conf;
    #REWRITE-END

    # 禁止访问敏感文件和目录,防止泄露站点配置、源码和版本控制信息
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

    # 一键申请 SSL 证书验证目录相关设置:允许所有客户端访问该目录,保证证书自动续签流程正常
    location ~ \.well-known{
        allow all;
    }

    # 禁止在证书验证目录存放可执行脚本、压缩包等敏感文件,防止攻击者利用该目录上传恶意文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    # 图片类静态资源缓存配置:设置 30 天缓存有效期,关闭日志记录以减轻服务器负担
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    # JS 和 CSS 类静态资源缓存配置:设置 12 小时缓存有效期,关闭日志记录提升服务器性能
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }

    # 配置站点访问日志的存储路径,记录所有合法请求的访问信息
    access_log  /www/wwwlogs/RSA业务网站.log;
    # 配置站点错误日志的存储路径,记录服务器运行过程中的错误信息,便于排查问题
    error_log  /www/wwwlogs/RSA业务网站.error.log;
}
© 版权声明
THE END
评论 抢沙发

请登录后发表评论

    暂无评论内容