# 需求 1. 监听 443 端口(SSL)或者其他端口; 2. 作为“默认”服务器(即所有未匹配到其他 `server_name` 的请求都会落到它); 3. 把这类请求 301 重定向到指定网页(例如 `https://example.com/404.html`)。 # 配置 ## NGINX 假设你已经把证书文件(`fullchain.pem` 与 `privkey.pem`)放在 `/etc/nginx/ssl/` 目录下,按需改成自己的真实路径即可。 ```nginx # /etc/nginx/conf.d/default.conf (或放在 sites-enabled 里) server { listen 443 ssl default_server; # 1. 监听 443 并设为默认 server_name _; # 2. 强制兜底,可省略或写 _ # SSL 证书路径 ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; # 可选:强化 SSL 安全 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 3. 未匹配时统一跳转 return 301 https://example.com/404.html; } ``` 使用说明 1. 把以上内容保存为 `/etc/nginx/conf.d/default.conf`(或任意被 `include` 的路径)。 2. 检查配置语法: ```bash sudo nginx -t ``` 3. 重载生效: ```bash sudo systemctl reload nginx ``` 当用户任何使用 HTTPS 访问服务器 IP 或未知域名时,都会 301 到 `https://example.com/404.html`。 ## Apache2 假设: - 已开启 `mod_ssl` 并准备好了证书/私钥:`/etc/ssl/certs/fullchain.pem``/etc/ssl/private/privkey.pem` - 已开启 `mod_rewrite`(用于干净地写重定向规则,可选)。 步骤 1:在任意被 `Include` 的目录里新建兜底配置文件 (Debian/Ubuntu 习惯放在 `/etc/apache2/sites-available/000-default-ssl.conf`,CentOS/RHEL 可放在 `/etc/httpd/conf.d/00-default-ssl.conf`) ```apache # 1. 必须是第一个被加载的 SSL 虚拟主机,才能成为“默认” ServerName default.invalid DocumentRoot /var/www/html # 随便指一个空目录即可,后面会重定向 # SSL 证书 SSLEngine on SSLCertificateFile /etc/ssl/certs/fullchain.pem SSLCertificateKeyFile /etc/ssl/private/privkey.pem # 可选:强化 TLS SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:... SSLHonorCipherOrder off # 2. 兜底重定向:所有流量 301 到指定地址 Redirect 301 / https://example.com/404.html # 3. 关闭目录索引,防止泄露 Options -Indexes ``` 步骤 2:启用并生效 Debian/Ubuntu 系: ```bash # 启用 SSL 模块(一次性) sudo a2enmod ssl sudo a2ensite 000-default-ssl.conf # 如果文件名不同请替换 sudo systemctl reload apache2 ``` CentOS/RHEL 系: ```bash # 模块默认已编译,直接重载 sudo systemctl reload httpd ``` 验证 ``` curl -kI https://YOUR_IP_or_Undefined_Domain/ HTTP/1.1 301 Moved Permanently Location: https://example.com/404.html ``` 至此,Apache 2 的“默认 443 虚拟主机”已配置完成: - 任何未匹配到现有 `ServerName/ServerAlias` 的 HTTPS 请求都会被 301 到指定网页。 Loading... # 需求 1. 监听 443 端口(SSL)或者其他端口; 2. 作为“默认”服务器(即所有未匹配到其他 `server_name` 的请求都会落到它); 3. 把这类请求 301 重定向到指定网页(例如 `https://example.com/404.html`)。 # 配置 ## NGINX 假设你已经把证书文件(`fullchain.pem` 与 `privkey.pem`)放在 `/etc/nginx/ssl/` 目录下,按需改成自己的真实路径即可。 ```nginx # /etc/nginx/conf.d/default.conf (或放在 sites-enabled 里) server { listen 443 ssl default_server; # 1. 监听 443 并设为默认 server_name _; # 2. 强制兜底,可省略或写 _ # SSL 证书路径 ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; # 可选:强化 SSL 安全 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 3. 未匹配时统一跳转 return 301 https://example.com/404.html; } ``` 使用说明 1. 把以上内容保存为 `/etc/nginx/conf.d/default.conf`(或任意被 `include` 的路径)。 2. 检查配置语法: ```bash sudo nginx -t ``` 3. 重载生效: ```bash sudo systemctl reload nginx ``` 当用户任何使用 HTTPS 访问服务器 IP 或未知域名时,都会 301 到 `https://example.com/404.html`。 ## Apache2 假设: - 已开启 `mod_ssl` 并准备好了证书/私钥:`/etc/ssl/certs/fullchain.pem``/etc/ssl/private/privkey.pem` - 已开启 `mod_rewrite`(用于干净地写重定向规则,可选)。 步骤 1:在任意被 `Include` 的目录里新建兜底配置文件 (Debian/Ubuntu 习惯放在 `/etc/apache2/sites-available/000-default-ssl.conf`,CentOS/RHEL 可放在 `/etc/httpd/conf.d/00-default-ssl.conf`) ```apache <IfModule mod_ssl.c> <VirtualHost *:443> # 1. 必须是第一个被加载的 SSL 虚拟主机,才能成为“默认” ServerName default.invalid DocumentRoot /var/www/html # 随便指一个空目录即可,后面会重定向 # SSL 证书 SSLEngine on SSLCertificateFile /etc/ssl/certs/fullchain.pem SSLCertificateKeyFile /etc/ssl/private/privkey.pem # 可选:强化 TLS SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:... SSLHonorCipherOrder off # 2. 兜底重定向:所有流量 301 到指定地址 Redirect 301 / https://example.com/404.html # 3. 关闭目录索引,防止泄露 Options -Indexes </VirtualHost> </IfModule> ``` 步骤 2:启用并生效 Debian/Ubuntu 系: ```bash # 启用 SSL 模块(一次性) sudo a2enmod ssl sudo a2ensite 000-default-ssl.conf # 如果文件名不同请替换 sudo systemctl reload apache2 ``` CentOS/RHEL 系: ```bash # 模块默认已编译,直接重载 sudo systemctl reload httpd ``` 验证 ``` curl -kI https://YOUR_IP_or_Undefined_Domain/ HTTP/1.1 301 Moved Permanently Location: https://example.com/404.html ``` 至此,Apache 2 的“默认 443 虚拟主机”已配置完成: - 任何未匹配到现有 `ServerName/ServerAlias` 的 HTTPS 请求都会被 301 到指定网页。 最后修改:2025 年 11 月 12 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏