Ubuntu

在 NGINX 上限制子域訪問

  • December 4, 2016

我有一個域,它被稱為mydomain.com,它在 NGINX 伺服器上執行。sites-enabled我在for上添加了新配置subdomain.mydomain.com,它的工作。

但是當我訪問時whatever.mydomain.comwildcard.mydomain.comNGINX 不顯示 404,而是執行配置,如mydomain.com.

如何限制訪問子域,僅適用於啟用站點的可用配置?

您可以像這樣設置“catch all”伺服器塊:

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

引用自:https://serverfault.com/questions/818670