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 }
原文出处:huaijiujia -> https://www.huaijiujia.com/2018/11/27/nginx%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6-%E5%AE%89%E5%85%A8%E9%85%8D%E7%BD%AE-%E9%9D%99%E6%AD%A2ip%E8%AE%BF%E9%97%AE%E6%9C%8D%E5%8A%A1%E5%99%A8/