1、listen 指令后面有一个参数default_server
,这个参数是在 0.8.21 版本以后才有的,而之前是default
指令。Nginx 的虚拟主机是通过HTTP请求中的Host值来找到对应的虚拟主机配置,如果找不到呢?那 Nginx 就会将请求送到指定了 default_server
的 节点来处理,如果没有指定为 default_server
的话,就跑到 localhost 的节点,如果没有 localhost 的节点,那只好 404 了。
2、server_name _;
这里指定的不是什么特别的名字,它只是一个无效的域名。从来不会匹配任何真实名字相匹配。
一、80端口访问时:
这里介绍修改配置文件nginx.conf两种方法:
1)在server段里插入如下正则:
listen 80;
server_name www.yuyangblog.net;
if ($host != 'www.yuyangblog.net'){
return 403;
}
2)添加一个server
新加的server(注意是新增,并不是在原有的server基础上修改)
server {
listen 80 default;
server_name _;
return 403;
}
二、443端口访问时:
必须要提供 ssl证书,才能 正确执行 ip 屏蔽 操作。
server
{
listen 443 ssl default_server;
ssl_certificate path_to_your_fullchain.cer;
ssl_certificate_key paht_to_your_key;
return 301 https://demo.com;
#other return way
#return 400; # ban ip access to https server ,return 444, 404 is also OK
}