现象
- 直接以ip访问。nginx默认会以第一个server进行响应。
- 以一个未配置的域名访问,nginx也会以第一个server进行响应。
为什么
如果一个ip绑定了多个域名,或者将域名的二级域名泛解析到同一个ip,那么会遇到default_server的问题。
配置
http
server {
listen 1.2.3.4:80 default_server;
listen [::]:80 default_server;
server_name _;
server_name_in_redirect off;
log_not_found off;
return 410;
}
https
https比http处理相对比较麻烦一点,不能直接的重定向到http。必须首先建立成功的ssl连接,否则,一切都是白扯。
创建一个自签名的证书,执行如下脚本,过程中无须输入任何内容,一路默认执行。
openssl req -newkey rsa:2048 -nodes -keyout default_server-key.pem -x509 -days 3650 -out default_server.pem
server {
listen 443 ssl http2 default_server;
server_name _;
ssl_certificate /usr/local/www/default_server/default_server.pem;
ssl_certificate_key /usr/local/www/default_server/default_server-key.pem;
server_name_in_redirect off;
log_not_found off;
return 410;
}