nginx配置默认站点,禁止未绑定域名访问

Nginx 2019-12-25 阅读 237 评论 0

问题

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;
}
最后更新 2019-12-25