nginx阻止对未绑定域名的访问
在处理请求时,nginx会按照配置顺序逐一检查server和location块进行匹配。
若请求访问未配置的域名,由于无法匹配任何server块,系统会自动选择第一个server块进行处理。
具体示例如下:
nginx配置文件节选
server {
location {
server_name a.example.com;
index index.html;
}
location {
server_name b.example.com;
index index.html;
}
}
当用户访问c.example.com时会出现什么情况?
实际上请求会被a.example.com的配置捕获。
解决方案
通过配置默认server块可以有效拦截非法请求:
server {
listen 80;
listen 443;
return 444;
}
server {
location {
server_name a.example.com;
index index.html;
}
location {
server_name b.example.com;
index index.html;
}
}
更推荐使用default_server显式声明:
server {
listen 80 default_server;
listen 443 default_server;
return 444;
}
这种方式不依赖配置顺序,建议优先采用。
总结
本文详细介绍了nginx防止未绑定域名访问的配置方法,通过合理设置默认server块可以有效提升服务安全性。
K8s部署Nginx集群,通过Ingress实现HTTPS域名访问过程
云服务器用nginx配置域名访问前后端分离项目
Nginx 只允许 www 域名访问并禁止裸域名访问的实现步骤
Nginx 搭建域名访问环境的详细过程
Nginx配置server_name为域名后无法访问的问题解决
Nginx禁止IP访问只允许域名访问及防盗链设置