限制NGINX上的子域访问

我有一个域,它叫做mydomain.com ,它运行在NGINX服务器上。 我在为subdomain.mydomain.com sites-enabled上添加了新的configuration,并且工作。

但是当我访问, whatever.mydomain.comwildcard.mydomain.com ,NGINX不显示404,但它是像mydomain.com执行configuration。

如何限制访问子域名,仅适用于启用网站的可用configuration?

你可以像这样设置一个“全部捕获”服务器块:

 server { listen 80 default_server; server_name _; return 404; #alternative: return 444; } 

如果您只想捕获到mydomain.com子域,则可以指定server_name *.mydomain.com

一般来说,匹配服务器名称是由nginx按以下顺序完成的:

  1. 完全符合
  2. 与*作为前缀的最长匹配
  3. 最长匹配*作为后缀
  4. 首先在configuration中匹配正则expression式
  5. 抓住所有的块
  6. 在configuration中find第一个服务器块

Nginx找不到你的子域的任何匹配,因此到达了第6点,并使用唯一的现有块。

更多关于server_name的选项可以在这里find: http : //nginx.org/en/docs/http/server_names.html