我有一个域,它被称为mydomain.com
,它在 NGINX 服务器上运行。我sites-enabled
为添加了新的配置subdomain.mydomain.com
,并且它起作用了。
但是当我访问时,,,whatever.mydomain.com
NGINXwildcard.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按照以下顺序匹配服务器名称:
- 完全符合
- 以 * 作为前缀的最长匹配
- 以 * 作为后缀的最长匹配
- 配置中第一个匹配的正则表达式
- 捕获所有块
- 在配置中找到的第一个服务器块
Nginx 找不到您的子域名的任何匹配项,因此达到点 6 并使用唯一现有的块。
更多选项server_name
请参见此处:http://nginx.org/en/docs/http/server_names.html