这么写后,解析到服务器的所有域名全部跳到https://www.bbxinwen.com,感觉server_name绑定的域名无效?
(删除了目录下默认的default.conf)
server {
listen 80;
server_name www.bbxinwen.com;
return 301 https://www.bbxinwen.com$request_uri;
}
server {
listen 443 ssl;
server_name www.bbxinwen.com;
……
}
对于nginx,每个
listen ip:port;
作为一个socket如果一个socket没有默认配置,那会按配置文件的顺序把第一个作为默认配置,没有匹配到的域名,会在这个
server {}
block处理。举个例子
假如80没有其他配置,那如果用
c.com
,d.com
,e.com
等等没有在server_name里配置的域名访问80端口,都会匹配到a.com
nginx有两个配置可以覆盖这种情况
server_name _;
listen port default_server;
server_name 配置为 _ 表示匹配所有非匹配域名,比如上方的情况,如果加上一个配置
server _;
,那都会匹配到这个server blocklisten后面加上default_server,作用基本是一样的,不过作用域是该socket
通常1和2会同时使用。
所以,对于楼主的情况,这是正常现象
如果不想让非
www.bbxinwen.com
的域名不跳转到https那应该加一个
后面加上其他逻辑,比如直接返回404。