![限制 NGINX 上的子域名访问](https://linux22.com/image/694608/%E9%99%90%E5%88%B6%20NGINX%20%E4%B8%8A%E7%9A%84%E5%AD%90%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE.png)
我有一个域,它被称为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