限制 NGINX 上的子域访问

yus*_*san 0 ubuntu nginx subdomain

我有一个域,它叫做mydomain.com,它在 NGINX 服务器上运行。我在sites-enabledfor上添加了新配置subdomain.mydomain.com,它起作用了。

但是当我访问, whatever.mydomain.com, 时wildcard.mydomain.com,NGINX 不显示 404,但它的执行配置类似于mydomain.com.

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

dim*_*m-0 5

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

server {
  listen 80 default_server;
  server_name _;
  return 404; #alternative: return 444;
}
Run Code Online (Sandbox Code Playgroud)

如果您只想将子域捕获到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