nginx配置默认站点,禁止未绑定域名访问
问题
nginx配置成功后,hosts一个nginx没有配置的域名,如example.com到服务器的ip,访问example.com,能正常显示。
理想的情况是:访问 example.com 出现404等错误状态或者301到其他已经配置的域名。
方法1,配置默认server块
nginx.conf配置中的第一个server块是所有请求的默认块,响应没有匹配的域名。如果nginx.conf只有一个server块,这server块将处理所有请求。
可以配置第一个server块,直接
return 404;
或者301永久跳转到其他域名
return 301 http://$host$request_uri;
完整的代码如下:
# Default server
server {
return 404;
# return 301 http://$host$request_uri; # 或者301跳转
}
server {
server_name domain_1;
[...]
}
server {
server_name domain_2;
[...]
}
方法2:使用default_server
使用 default_server,直接返回 444 http状态,节省带宽。
444是nginx内置的错误代码, nginx 下即使是 return 404,也会有返回的header和一个包含错误信息的html body。但是return 444,服务器会立刻关闭连接,就好像服务不存在一样。
server {
listen 80 default_server;
server_name _;
return 404;
}