普遍遇到的问题:
1. 情况一:nginx网站被别人的域名恶意解析指向我的网站上,且这个恶意解析的域名没有备案,通信管理局查到后会对网站进行关停处理。
2. 情况二:为了节省公网IP,大家在一个 nginx下经常会放多个网站共用一个出口,比如:www.c.com、www.d.com、www.e.com等,如果 www.d.com 需要配置证书,其它的域名没有购买证书。此种情景下,有证书的域名 https://www.d.com 可以正常使用,但如果访问未部署证书的其它域名如 https://www.c.com 或 https://www.e.com,会自然获取 https://www.d.com 的域名证书,这样访问就有问题了。
针对上面2种情况的问题,我们只要对 nginx 安装目录下的 conf 文件进行配置即可,在这里配置的主要目的就是设置一个默认的 default_server 来接管并处理上面2种问题。配置如下:
server {
listen 80 default_server; #监听80端口
listen 443 ssl default_server; #监听443端口
server_name _; #防止恶意域名
#让没证书SSL的域名,通过https访问时跳回80端口上
if ($server_port ~ 443) {
return 301 http://$host$request_uri;
}
#对恶意解析的域名返回404状态码
return 404;
#说明:上面有2个return操作,这个顺序千万不要错,否则达不到效果。
#CA
ssl_certificate /CA/申请的一个普通证书.crt;
ssl_certificate_key /CA/申请的一个普通证书.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-R
SA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES12
8-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
#hidden nginx version
server_tokens off;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}