nginx server_name没有优先

为什么我的configuration在指定时不会路由到特定的server_name

我的configuration的一部分:

 server { listen 443 ssl; server_name foo-bar.example.com; include includes/http/server/ssl.conf; location / { #... } } server { listen 80 default_server; listen 162 default_server; listen 443 default_server; listen 465 default_server; listen 3306 default_server; listen 9200 default_server; return 444; } 

但是,转到域foo-bar.example.com将返回444状态。 当我删除最后一个块时,它按预期工作。

我试着添加:

  • server_name ""
  • server_name _

在最后一块没有成功


此页面上定义的优先级: http : //nginx.org/en/docs/http/server_names.html

  • 确切的名字
  • 以星号开头的最长通配符名称,例如“* .example.org”
  • 最长的通配符名称以星号结尾,例如“mail。*”
  • 首先匹配正则expression式(按照在configuration文件中出现的顺序)

…告诉我,我所做的应该工作,伊莫。

查看位于/var/log/nginx/中的error.log ,发现no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking

所以添加一个新的块:

 server { listen 443 default_server; include includes/http/server/ssl.conf; return 444; } 

…当从前面的块中删除listen 443 default_server ,做了诀窍…


包括/ HTTP /服务器/ ssl.conf中

 ssl_certificate /etc/ssl/certs/crt.crt; ssl_certificate_key /etc/ssl/private/key.key;