nginx server_name 没有优先考虑

nginx server_name 没有优先考虑

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

我的部分配置:

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.*”
  • 第一个匹配的正则表达式(按配置文件中出现的顺序)

...告诉我我所做的应该有效,在我看来。

答案1

当我查看位于error.log的时/var/log/nginx/,我发现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/server/ssl.conf

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

相关内容