配置单域名需三点:语法正确(server_name在server块内、listen后,仅写域名)、DNS与listen同步生效(域名解析至服务器IP且端口监听开启)、设default_server防未匹配请求暴露站点。

配置基础的单域名 server_name,关键就三点:写对语法、确保 DNS 和监听到位、避免默认 server 干扰。
基本写法与位置要求
server_name 必须出现在 server 块内,且紧随 listen 指令之后。最简形式就是直接写域名(不含协议和路径):
-
server_name example.com;—— 精确匹配 Host 头为example.com的请求 - 多个域名用空格分隔:
server_name example.com www.example.com; - 不能写成
http://example.com或example.com/,否则匹配失败
DNS 与 listen 必须同步生效
仅配 server_name 不起作用。必须同时满足:
- DNS 已将
example.com解析到这台 Nginx 服务器的 IP -
listen指令已声明对应端口(如listen 80;或listen 443 ssl;) - 如果启用了 HTTPS,
server_name还要和 SSL 证书的 Subject Alternative Name(SAN)一致,否则浏览器会报证书错误
防止未匹配请求落到意外站点
当用户直接用 IP 访问,或 Host 头是未知域名时,Nginx 会选第一个 listen 80 的 server 块处理——这可能暴露你不希望公开的站点。稳妥做法是显式定义一个兜底 server:
- 加
default_server标志:listen 80 default_server; - 搭配简单响应,比如返回 444(关闭连接)或 404 页面,避免信息泄露











