本文最后更新于 799 天前,其中的信息可能已经有所发展或是发生改变。
给网站套上 Cloudflare 防止被打和缓存部分静态文件应该是常规操作了,但是想起来之前好像见到过的帖子:第一次知道 HTTPS 会暴露服务器 IP,在新的服务器上试验了一下发现在访问 [https:// 服务器 IP]() 的时候真的会返回 Nginx 配置中的第一封 SSL 证书而泄露域名,在这种全网扫 IP 成本极低的年代真的是很危险......于是还是决定稍作配置以排除掉这个危险因素。
1、80 端口常规配置
在用户用 IP 直接访问时返回 500 错误。
# ========= 基础配置 =========
# 禁止 IP 直接访问
server {
listen 80;
listen [::]:80;
server_name _;
location / {
return 500;
}
}
直接访问 http:// 服务器 IP:80 端口效果:

2、443 端口配置
参考文章:【小教程】Nginx 默认拒绝发送证书设置教程
# 防止发送 SSL 证书
server {
listen 443 ssl http2 default_server;
server_name _;
ssl_protocols TLSv1.2 TLSv1.3;
# 启用拒绝 TLS 握手
ssl_reject_handshake on;
# SSL Session 缓存,不设置的话无缓存配置不生效
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# log 位置自行替换
access_log /rab/log/nginx/access.log;
}
这样配置之后的访问效果:

ERR_SSL_UNRECOGNIZED_NAME_ALERT 就是我们想要的效果。
至此配置结束。