陌生域名解析到服务器ip - 这种异常流量对你的站点不一定是好事
文章目录
前言
当你在百度统计/google统计平台发偶然发现一些关键词来源的站点和自己站点一点不相关时.
这时你要注意了,可能你的内容正在养着别人的域名.
如果你点击这些异常站点,打开的原来是你自己的站.
偶尔你也会收到云服务器平台发来的通知邮件:
大概是说解析到你服务器上的 xxx.com 域名,
违反了国家有关法规,请您尽快处理!
处理方式:
1.停止域名解析 ,完成域名备案后可重新恢复解析;
- 停止网站服务, 完成备案后可重新开启业务;
为什么有人要怎么做
陌生人把自己的域名解析到你的 IP ,就相当于原样复制了一个内容丰富的站点,这个域名被搜索引擎收录后,就能够短时间内得到和你的站点相同的权重( PR 值),然后有权重的域名是可以卖钱的.
有的人遇到这种情况,会在web服务器里直接设置 301 跳转,相当于多个域名给自己一个站点带来流量,貌似很不错的样子.
其实这种方式是得不偿失
首先你不清楚这个陌生域名是否备案,以前是否在搜索引擎黑名单,垃圾名单中,如果是上述几种类型域名,只会影响你自己站点的收录排名和PR.
其次这些域名假如之前是做一些违规违法内容,而且已经在搜索引擎养了一些敏感关键词,被用户搜索敏感词,直接定位到你的站点,后果应该清楚吧.
为什么他的域名能打开你的站点
以nginx为例
当用户浏览器输入一个域名开始访问时
首先根据域名定位到你的服务器
如果根据 listen 指令无法得到最佳匹配, 将会开始解析 server_name 指令. nginx 会检查请求中的 “Host” 头, 这个值包含了客户端实际试图请求的域名或者 ip 地址. nginx 会根据这个值去匹配 server_name 指令, 匹配规则如下:
- nginx 会尝试寻找一个和 sever_name 和 Host 值完全匹配的 server 块, 如果找到多个精确匹配, 则会使用第一个匹配的 server 块
- 如果没有找到精确匹配的 server 块, 则 nginx 尝试找到 server_name 带有 * 开头的 server 块, 如果找到多个, 则选择最长匹配的 server 块
- 如果没有找到使用开头的 server 块, 则会寻找以结尾的 server 块, 同样, 如果有多个匹配, 选择最长匹配
- 如果没有找到使用 * 匹配的 server 块, 则会寻找使用正则表达式 (以~ 开头) 定义 server_name 的 server 块, 如果找到多个匹配, 会使用第一个匹配
- 如果以上都没有匹配, 则使用 default_server. 如果没有指定 default_server, 则会选择第一个可用的 server. 我们可以指定对于没有匹配的 host 值时, 返回错误到客户端. 可以用来防止别人把垃圾流量转到你的网站
如何设置default_server
当未被命中的 server块,最后选择用 default_server时,我们把这样的流量全部返回 444 状态码.
通过返回 444 这个 nginx 的非标准错误码让 nginx 断开与浏览器的连接
设置
我的默认配置放在了 /etc/nginx/nginx.conf 文件里
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# return 444;
# }
}
如果你的站点开启了https服务,那么443端口的 default_server 一样也返回 444 状态码即可.