nginx下如何禁止未绑定域名访问

背景

网站初建,对nginx配置也不怎么懂,今日查看网站的百度收录排名,突然发现有一个一模一样的网站出现,连内容和logo也一样,并且排名和收录都比自己的网站高。仔细一看第一反应就是他的域名解析到了我的服务器IP上,应该是nginx上配置问题,没有进行过滤。网上查了一下原因和解决方法,总结如下:

方式一

禁止未绑定的域名解析到服务器,跳转到403错位

server{
    listen 80 default_server;
    server_name _;
    return 403;
}

其实这个名字没有什么特别的,它仅仅是一个许多无效的域名中的一个代表,与任何真实的名字永远不会相交。其它无效的名称,如“ - “ 和” !@# “也可同样使用。
default_server:nginx的虚拟主机是通过HTTP请求中的Host值来找到对应的虚拟主机配置,如果找不到呢?那 nginx就会将请求送到指定了 default_server 的 节点来处理

对于未绑定的域名指向你的服务器时,匹配不到你配置的虚拟主机域名后,会默认使用这个虚拟主机,然后直接返回404。

方式二

把这些流量收集起来,导入到自己的网站,以其人之道还治其人之身

server{
    listen 80 default_server;
    server_name _;
    rewrite ^(.*) http://www.jsout.com permanent;
}

总结

其实这人也挺无聊的。不过,对于我自身,也加深了解了对nginx的配置。看来对于一个前端工程师来说,多了解一下nginx等服务器的配置也是必要的,成长总是在磕碰之后。