nginx禁止未绑定域名访问
nginx 只允许某些域名访问 其他一律不能访问 ,是怎么写的?
对于这个问题可以参考官方文档
原文
In catch-all server examples the strange name “_
” can be seen:
1 2 3 4 5 |
server { listen 80 default_server; server_name _; return 444; } |
There is nothing special about this name, it is just one of a myriad of invalid domain names which never intersect with any real name. Other invalid names like “--
” and “!@#
” may equally be used.
解释:
在这个server段实例可以看到:奇怪的server_name名字“ _
“
1 2 3 4 5 |
server { listen 80 default_server; server_name _; return 404; } |
其实这个名字没有什么特别的,它仅仅是一个许多无效的域名中的一个代表,与任何真实的名字永远不会相交。其它无效的名称,如“ -
“ 和” !@#
“也可同样使用。
default_server:nginx的虚拟主机是通过HTTP请求中的Host值来找到对应的虚拟主机配置,如果找不到呢?那 nginx就会将请求送到指定了 default_server 的 节点来处理
对于未绑定的域名指向你的服务器时,匹配不到你配置的虚拟主机域名后,会默认使用这个虚拟主机,然后直接返回404。
把这个server段配置添加你的nginx.conf即可
我这样配置之后 所有得网站都不可以访问了
@有个问题 444改成404试试
server {
listen 8080 default_server;
server_name _;
return 444;
}
设置了这个未绑定这个端口的域名不能访问,但是,服务器上其他的域名加上8080端口居然能访问那个8080的网站?这是什么原因?
顶一个吧
这个和空主机名""一样效果的吧?
终于解决了
这个好,帮我了一个忙