西葫芦(角瓜)炒鸡蛋
家常菜之西葫芦炒鸡蛋一、所需食材西葫芦中等大小半根鸡蛋...
nginx如果在没有正确配置的情况下直接访问服务器ip或未经配置的域名(域名已指向服务器ip)会出现成功访问或者https证书不安全的问题
关键词:nginx ip 域名 https
server
{
listen 80 default_server;
server_name _;
return 444;
}
defalut_server显式指出本server为80端口的默认server,因为是默认server,所以server_name其实可以填任意值,444为nginx自定义code,表示断开连接不返回任何响应。
server {
listen 443 default_server;
server_name _;
include conf.d/ssl.config;
# 不用返回 444 了,直接拒绝握手
ssl_reject_handshake on;
# return 444;
}
在nginx1.19.4 及以上版本,禁止非预期域名直接访问配置也很简单,只需要添加443端口监听并配置ssl_reject_handshake on即可
要是你仍然使用的是低版本的nginx,例如nginx 1.18.0及以下版本,你仍然可以通过为以上server块配置无效的https自签名证书来达到一样的效果,使用权威机构签发的证书也是可以的
nginx的default_server指令可以定义默认的server去处理一些没有匹配到server_name的请求。如果没有显式定义,则会选取第一个定义的 server 作为 default_server。
在了解到如上规则后,我们可以捕获未做绑定的域名访问或直接IP访问,做重定向到 403 页面等处理。
nginx 批量载入配置 conf 时会按 ascii 排序载入,这就会以 server_a.conf server_b.conf server_c.conf 的顺序载入,如果没有声明 default_server 的话,那 server_a 会作为默认的 server 去处理 未绑定域名/ip 的请求。
nginx禁止直接ip、未配置域名访问配置
nginx 的 default_server 定义及匹配规则
NGINX 配置避免 IP 访问时证书暴露域名