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 }