Nginx服务器名称&;侦听匹配指定的模式

Nginx服务器名称&;侦听匹配指定的模式,nginx,Nginx,在本例中,域已替换为domain.com 我们的主要问题: 当我输入我没有被重定向到,我们目前没有一个规则,什么是最好的办法来解决这个问题 根据我们的nginx配置,我们没有为指定443,但仍然可以访问它,这是为什么 我们拥有domain.com和www.domain.com的有效ssl证书。 我们没有通配符证书*.domain.com 我们的配置: #All non-matching patterns server { listen 80; #enabling this will c

在本例中,域已替换为domain.com

我们的主要问题: 当我输入我没有被重定向到,我们目前没有一个规则,什么是最好的办法来解决这个问题

根据我们的nginx配置,我们没有为指定443,但仍然可以访问它,这是为什么

我们拥有domain.com和www.domain.com的有效ssl证书。 我们没有通配符证书*.domain.com

我们的配置:

#All non-matching patterns
server
{
  listen 80;

  #enabling this will cause things to break.
  #2015/12/18 09:21:54 [error] 32165#0: *1661 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: *censored*, server: 0.0.0.0:443
  #listen 443 ssl;

  #Horrible looking match all pattern.
  server_name _ "" domain.com *.domain.com;

  return 301 https://www.domain.com$request_uri;
}

#Main site ssl enforced
server
{
  listen 443 ssl;

  server_name www.domain.com ios.domain.com android.domain.com;

  ...
}

#Staging / Test site
server
{
  listen 443 ssl;
  listen 80;

  server_name stage.domain.com;

  ...
}

#Rental cars site ssl enforced
server
{
  listen 443 ssl;

  server_name hyrbil.domain.com;

  ...
}

#ios redirect to enforce https
server
{
  listen 80;

  server_name ios.domain.com;

  return 301 https://ios.domain.com$request_uri;
}

#android redirect to enforce https
server
{
  listen 80;

  server_name android.domain.com;

  return 301 https://android.domain.com$request_uri;
}
奖金问题:
是否可以匹配所有ssl通信并执行重定向,除非它匹配特定域,例如,即使我没有xxx.domain.com的证书,也可以将301传递给其他域,但不显示“此页面不安全,是否确实要处理”?

如果您有一个虚拟主机正在侦听443,到达您IP地址的所有流量都将由该虚拟主机提供服务

为domain.com创建一个SSL虚拟主机,并在其中放置一个简单的重定向

或者创建一个“catch all/default”SSL virtualhost,并检查主机头和重定向,如:

if($host!~*^www.doman\.com$){
重写^(.*)$http://www.domain.com1美元永久性;
}

但它将在证书中未包含的所有FQDN上显示SSL证书错误

nginx总是选择一个响应请求的服务器。如果它不能匹配
服务器\u名称
,它将为
端口
选择默认(通常是第一个)服务器块。