https 协议的主机名获取规则 如下链接 http://www.ttlsa.com/web/multiple-https-host-nginx-with-a-ip-configuration/
总的来讲: 这是由SSL协议本身的行为引起的——先建立SSL连接,再发送HTTP请求,所以nginx建立SSL连接时不知道所请求主机的名字,因此,它只会返回默认主机的证书。
如果你想设置默认主机: 则在 listen port 【default_server】
SSL 需要开启 SSL ON
普通情况下,以第一个找到的server作为默认主机
如果出现include *.conf 那么哪个会成为默认主机呢? linux没有文件创建时间,没法直接看到。
但读取conf文件总会有一个顺序的, 那么第一个读到的conf文件中的配置自然就是默认主机,
确认文件读取的顺序
- #include <stdio.h>
- #include <dirent.h>
- int main(int argc, char * argv[])
- {
- struct dirent *ptr;
- DIR *dir;
- dir=opendir("conf 所在目录");
- printf("文件列表:\n");
- while((ptr=readdir(dir))!=NULL)
- {
- //跳过‘.‘和‘..‘两个目录
- if(ptr->d_name[0] == ‘.‘)
- continue;
- printf("%s\n",ptr->d_name);
- }
- closedir(dir);
- return 0;
- }
最后会显示文件读取的顺序