限制 NGINX 上的子域名访问

限制 NGINX 上的子域名访问

我有一个域,它被称为mydomain.com,它在 NGINX 服务器上运行。我sites-enabled为添加了新的配置subdomain.mydomain.com,并且它起作用了。

但是当我访问时,,,whatever.mydomain.comNGINXwildcard.mydomain.com不会显示 404,但它会像这样执行配置mydomain.com

如何限制访问子域,仅适用于已启用站点的可用配置?

答案1

您可以像这样设置“捕获所有”服务器块:

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

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

一般来说,nginx按照以下顺序匹配服务器名称:

  1. 完全符合
  2. 以 * 作为前缀的最长匹配
  3. 以 * 作为后缀的最长匹配
  4. 配置中第一个匹配的正则表达式
  5. 捕获所有块
  6. 在配置中找到的第一个服务器块

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

更多选项server_name请参见此处:http://nginx.org/en/docs/http/server_names.html

相关内容