Nginx默认站点配置
Nginx默认站点配置
引言
直接用IP或未匹配到server_name的域名访问时,Nginx会落到默认站点。装好Nginx自带的欢迎页就是默认server,安全上建议改掉,避免暴露版本或被扫描利用。
默认站点如何确定
同一端口下,第一个server块、或带default_server标记的就是默认站点:
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.html;
}
server_name用_占位,表示匹配任意未命中的主机名。
配置占位拒绝页
对外只暴露正式站点时,默认站点直接返回444或简单403:
server {
listen 80 default_server;
server_name _;
return 444;
}
444是Nginx特有,直接断开连接,不返回内容。
隐藏版本号
http {
server_tokens off;
}
避免错误页暴露Nginx版本,减少针对性漏洞扫描。
自定义默认首页
server {
listen 80 default_server;
server_name _;
root /var/www/default;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
多端口默认
HTTPS同理,443也要配default_server:
server {
listen 443 ssl default_server;
server_name _;
# 自签或占位证书,否则握手失败
return 444;
}
注意事项
- 一台机器同端口只能有一个default_server;
- 不配默认站,未匹配域名会落到第一个server,可能串站点;
- 改完nginx -t校验再reload;
- 云主机IP直扫建议默认站返回444,不暴露首页;
- 区分default_server和servername ,前者是优先级标记;
- SSL默认站必须有证书,否则浏览器握手报错。
总结
默认站点由default_server或同端口首个server决定,用server_name _占位。安全做法是把默认站返回444拒绝、server_tokens off隐藏版本,443也要配默认拒绝站,避免IP直扫串到正式站点。改完务必-t校验再reload。