拒绝nginx上的端口80上的某些子域名

我有几个域/子域,我有一个server块来正确地redirect到端口443.但是我也想做的是对于这些子域的几个,我不希望它连接在所有港口80。

所以下面是我redirect到端口443的值的一个例子。

 server { listen 80; server_name ~^(?<subvar>sub1|sub2|sub3|sub3)\.example\.com$; return 301 https://$subvar.example.com$request_uri; } 

所以我也有一个sub4.example.com ,我不想在80端口连接,但是当我尝试访问它,我得到了nginx的404找不到消息,我想实现的是一个“服务器不是find“类的消息。

让我知道你是否想要更多的信息,或者如果我错过了什么。

  • 不要在端口80上听这些域名
  • 在默认的虚拟主机中返回nginx特殊的HTTP代码444
 server { listen 80 default_server; return 444; } server { listen 80; server_name ~^(?<subvar>sub1|sub2|sub3)\.example\.com$; return 301 https://$subvar.example.com$request_uri; }