在使用 Nginx 搭建多个网站时,我们经常会用到“虚拟主机”(Virtual Host)功能。但你是否遇到过这样的问题:明明配置了多个站点,访问某个域名时却打开了错误的网站?这很可能是因为你没有理解 Nginx 虚拟主机优先级 的匹配规则。
虚拟主机是指在一台服务器上运行多个网站的技术。Nginx 通过 server 块来定义不同的虚拟主机,每个 server 块可以监听不同的域名、IP 或端口。
Nginx 在收到一个 HTTP 请求时,会按照以下顺序决定使用哪个 server 块来处理请求:
server_name 中有与请求 Host 完全一致的域名(例如 example.com),则优先使用该 server 块。*.example.com,匹配所有子域名。www.example.*,较少使用。~ 开头的 server_name,例如 ~^www\.(.+)$。server 块(或显式标记为 default_server 的块)作为兜底。下面是一个典型的 Nginx 配置文件片段,展示了不同优先级的虚拟主机:
# 默认 server(兜底)server { listen 80 default_server; server_name _; return 444; # 直接关闭连接}# 精确匹配server { listen 80; server_name example.com; root /var/www/example;}# 通配符匹配(左侧)server { listen 80; server_name *.example.com; root /var/www/subs;}# 正则匹配server { listen 80; server_name ~^(?.+)\.test\.com$; root /var/www/test/$subdomain;} 在这个例子中:
example.com → 使用第二个 server(精确匹配)blog.example.com → 使用第三个 server(通配符匹配)api.test.com → 使用第四个 server(正则匹配)unknown.com)→ 使用第一个 server(default_server)很多初学者会忽略 default_server 的作用,导致未预期的站点被加载。强烈建议:
default_server,用于拦截非法请求。nginx -t 检查语法,并重载服务:systemctl reload nginx。掌握 Nginx 虚拟主机优先级 是搭建多站点 Web 服务器的基础。通过理解匹配顺序(精确 → 通配符 → 正则 → 默认),你可以精准控制每个域名的访问行为,避免安全和配置错误。
希望这篇 Nginx配置教程 能帮助你彻底搞懂 虚拟主机匹配规则,轻松完成 Web服务器配置!
本文由主机测评网于2025-11-30发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025111502.html