nginx绑定域名核心依靠server_name指令配合server块实现;支持单域名、空格分隔多域名、通配符(*.example.com)、正则(~^开头)及兜底(_)写法,匹配优先级为精确>通配符>正则,需配合listen、dns解析及nginx -t验证后reload生效。

Nginx 绑定域名,核心是靠 server_name 指令配合 server 块实现。只要 DNS 已将域名解析到服务器 IP,配置生效后就能访问对应站点。
server_name 的写法很灵活,支持多种形式:
- 单个域名:
server_name example.com; - 多个域名(空格分隔):
server_name example.com www.example.com blog.example.com; - 通配符匹配二级域名:
server_name *.example.com;(匹配 api.example.com、shop.example.com 等) - 正则表达式(需加
~前缀):server_name ~^(?<subdomain>[a-z]+)\.example\.com$;</subdomain>(可提取子域名供后续使用) - 匹配任意域名(含 IP 直接访问):
server_name _;(常用于兜底或禁止 IP 访问)
一个最小可用的绑定示例:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.php;
}
注意几个关键点:
-
listen必须明确(如80或443 ssl),否则可能不响应请求 -
server_name不区分大小写,但建议统一用小写 - 多个
server块可共存于同一配置文件中,Nginx 会按server_name匹配最优项(最长匹配优先) - 若同时配置了
www和不带www的域名,通常建议用单独的server块做 301 跳转,避免重复内容
常见搭配操作:
- 把不带 www 的域名跳转到带 www 的:
server { listen 80; server_name example.com; return 301 https://www.example.com$request_uri; } - 配合 SSL 时,
server_name要和证书域名一致(包括通配符证书覆盖范围)
不复杂但容易忽略。











